2016-07-12 5 views
-1

私は画像の幅と高さを知ってほしいと印刷が、CGSizeは常に0CGSize幅と高さがゼロ

let img : UIImage = UIImage.init(named: "icon_ear")! 
NSLog("img w : %d, h : %d", img.size.width, img.size.height) 
//img w : 0, h : 0 `  

let cs = CGSize(width: 100, height: 100) 
NSLog("cs w : %d, h : %d", cs.width, cs.height) 
//cs w : 0, h : 0 

何が問題になっていますが返さ?

+0

%fまたは文字列補間 'print(" w \(img.size.width) ")'を試してください。 – jtbandes

+0

ありがとうございました! – shot

答えて

1

CGSizeの幅と高さは整数ではなく浮動小数点です。 フォーマット指定子を%dから%fに変更するだけです。

NSLog("cs w : %f, h : %f", cs.width, cs.height) 
+1

ありがとう! – shot

3

widthheightは値(CGFloat浮動小数点であり、 対応する印刷形式は%fある:

NSLog("img w : %f, h : %f", img.size.width, img.size.height) 

%dフォーマットは整数するためのものです。文字列 のフォーマット指定子の完全なリストは、https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.htmlにあります。

CGSize cs = CGSizeMake(100, 100); 
NSLog(@"cs w : %d, h : %d", cs.width, cs.height); 
// warning: format specifies type 'int' but the argument has type 'CGFloat' (aka 'double') [-Wformat] 

が、スウィフトコンパイラは(まだ)その問題を検出しません:

ザ・クランCコンパイラは、問題について警告します。スウィフト、列補間(既にコメントで述べたように)で は代替物である:

let cs = CGSize(width: 100, height: 100) 
NSLog("cs w : \(cs.width), h : \(cs.height)") 

が、表現上少ない制御を提供します。 NSLog()と一緒に使用する場合は、フォーマット指定子を含む可能性のある文字列を補間しないように注意する必要があります( )。

+0

ありがとう! – shot