如何打印或loggingCGSize对象的值?
我试图logging(打印)像这样的CGSize对象的值:
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49); NSLog(@"size of tab is %@",sizeOfTab);
这个代码有什么问题吗? 当控制来到NSLog语句时,我的应用程序崩溃。
感谢Prasad
您可以调用以下内容来打印您之后的值:
NSLog(@"width = %f, height = %f", mySize.width, mySize.height);
尝试这个
CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49); NSLog(@"size of tab is %@",NSStringFromCGSize(sizeOfTab));
发生崩溃是因为sizeOfTab
不是NSString
格式。
%@表示你正在尝试插入一个string。 CGSize不是一个string,不能自动转换为一个。 这就是为什么你的应用程序崩溃。 相反,您需要分别logging各个属性,例如
NSLog(@"width is %f, height is %f.", sizeOfTab.width, sizeOfTab.height);
使用%f是因为宽度和高度属性的types是float 。
对于其他格式转换,请参阅文档: http : //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html
正如JoeBlow提到的 ( 我注意到打字和格式化这个答案之后 ),还有UIKit函数NSStringFromCGSize()
用于漂亮的打印,它的逆函数CGSizeFromString()
用于从NSString
对象创buildCGSize
结构。
Apple将CGSizeFromString(
string
)
的string
参数CGSizeFromString(
如下:
内容格式为“{ w , h }”的string,其中w是宽度, h是高度。 w和h值可以是整数或浮点值。 一个有效的string的例子是@“{3.0,2.5}”。 该string不是本地化的,所以项目总是用逗号分隔。
例
CGSize size = CGSizeFromString(@"{320,568}"); NSLog(@"Pretty printed size: %@", NSStringFromCGSize(size));
产量
Pretty printed size: {320, 568}
其他有用的function( CGGeometry参考 )
- CGRectGetHeight()
- CGRectGetWidth()
CGSize
具有CGFloat
types的成员宽度和高度。 您可以使用以下方式打印它们
NSLog(@"Width = %f, height = %f",sizeOfTab.width, sizeofTab.height);
这里self.view是UIView类的视图。 您可以使用此日志打印任何帧。
NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));