我想知道图像的宽度和高度,但CGSize总是返回0.
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 :(得分:3)
width
和height
是浮点值(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找到。
Clang C编译器会警告这个问题:
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]
但是Swift编译器还没有检测到这个问题。 在Swift中,字符串插值(如评论中已提到的)是一个 替代方法:
let cs = CGSize(width: 100, height: 100)
NSLog("cs w : \(cs.width), h : \(cs.height)")
但对表示的控制较少。
与NSLog()
一起使用时,也必须小心
不插入可能包含格式说明符的字符串。
答案 1 :(得分:1)
CGSize的宽度和高度是浮点而不是整数。 只需将格式说明符从%d更改为%f。
NSLog("cs w : %f, h : %f", cs.width, cs.height)