如何打印或记录CGSize对象的值?

时间:2011-07-08 08:39:20

标签: iphone objective-c ios4

我试图记录(打印)CGSize对象的值,如下所示:

CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);

NSLog(@"size of tab is %@",sizeOfTab);

此代码有什么问题;我的应用程序崩溃,而控制权来自NSLog语句。

由于 普拉萨德

6 个答案:

答案 0 :(得分:209)

试试这个

CGSize sizeOfTab = CGSizeMake(self.frame.size.width/tabCount, 49);
NSLog(@"size of tab is %@",NSStringFromCGSize(sizeOfTab));

发生崩溃是因为sizeOfTab不是NSString格式。

答案 1 :(得分:54)

您可以调用以下内容来打印您所追求的值:

NSLog(@"width = %f, height = %f", mySize.width, mySize.height);

答案 2 :(得分:10)

作为JoeBlow mentioned我在键入并格式化此答案后注意到),还有UIKit函数NSStringFromCGSize(),用于漂亮的打印,以及它的反向,{{3用于从CGSize对象创建NSString结构。

Apple记录string CGSizeFromString( string ) 参数,如下所示:

  

一个字符串,其内容的格式为“{ w h }”,其中 w 是   宽度和 h 是高度。 w h 值可以是整数或   浮动值。有效字符串的示例是@“{3.0,2.5}”。字符串   未本地化,因此项目始终用逗号分隔。


实施例

CGSize size = CGSizeFromString(@"{320,568}");
NSLog(@"Pretty printed size: %@", NSStringFromCGSize(size));

输出

Pretty printed size: {320, 568}

其他有用功能(CGSizeFromString()

  • CGRectGetHeight()
  • CGRectGetWidth()

答案 3 :(得分:6)

%@表示您正在尝试插入字符串。 CGSize不是字符串,不能自动转换为一个字符串。这就是你的应用程序崩溃的原因。相反,您需要单独记录单个属性,例如

NSLog(@"width is %f, height is %f.", sizeOfTab.width, sizeOfTab.height);
使用了

%f,因为 width height 属性的类型为 float

有关其他格式转换,请参阅文档:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

答案 4 :(得分:3)

CGSize的成员宽度和高度属于CGFloat类型。您可以使用以下

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

答案 5 :(得分:2)

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

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