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

Pra*_*sad 86 iphone objective-c ios4

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

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

NSLog(@"size of tab is %@",sizeOfTab);
Run Code Online (Sandbox Code Playgroud)

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

谢谢普拉萨德

vis*_*kh7 210

试试这个

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

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

  • 很酷这是我今天学到的新东西.+1,但我不会删除我的答案:-P. (3认同)

Luk*_*uke 55

您可以调用以下内容来打印您之后的值:

NSLog(@"width = %f, height = %f", mySize.width, mySize.height);
Run Code Online (Sandbox Code Playgroud)


yur*_*riq 11

正如JoeBlow所提到的(我注意到在输入并格式化了这个答案之后),还有UIKit函数NSStringFromCGSize(),用于漂亮的打印,以及它的逆CGSizeFromString(),用于CGSizeNSString对象创建结构.

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

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


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

产量

Pretty printed size: {320, 568}

其他有用功能(CGGeometry参考)

  • CGRectGetHeight()
  • CGRectGetWidth()


Gre*_*reg 6

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

NSLog(@"width is %f, height is %f.", sizeOfTab.width, sizeOfTab.height);
Run Code Online (Sandbox Code Playgroud)

使用%f是因为widthheight属性属于float类型.

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