如何打印或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(如下:

内容格式为“{ wh }”的string,其中w是宽度, h是高度。 wh值可以是整数或浮点值。 一个有效的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具有CGFloattypes的成员宽度和高度。 您可以使用以下方式打印它们

 NSLog(@"Width = %f, height = %f",sizeOfTab.width, sizeofTab.height); 

这里self.view是UIView类的视图。 您可以使用此日志打印任何帧。

  NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));