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


88

我试图像这样记录(打印)CGSize对象的值:

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

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

这段代码有什么问题吗?当控件进入NSLog语句时,我的应用程序崩溃了。

谢谢普拉萨德


2
NSStringFromCGSize()以及NSStringFromCGRect()
Fattie 2013年

Answers:


55

您可以调用以下命令来打印所需要的值:

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

217

试试这个

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

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


3
很酷,这是我今天学到的新东西。+1,但我不会删除答案:-P。
Praveen S

@Praveen:谢谢..很高兴我今天帮您学习一些新东西。我已经并且仍在通过SO接收此类信息。
visakh7 2011年

1
@ 7KV7发生崩溃是因为sizeOfTab不是对象(任何对象都会起作用,而不仅仅是a NSString)。CGSize是一个结构。
albertamg

thanku工作正常,但显示{nan,49},nan是什么?
普拉萨德

@普拉萨德:南,我认为代表的不是数字。什么是tabCount?尝试记录self.frame.size.width/tabCount
Visakh7 2011年

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));

输出量

Pretty printed size: {320, 568}

其他有用的功能(CGGeometry参考

  • CGRectGetHeight()
  • CGRectGetWidth()

6

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

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

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

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


欢迎来到SO。+1获取详细答案。
Praveen S

谢谢。我环顾四周,很惊讶地看到有多少人在问一个问题之前从未打扰过他们。我把链接放在那里,所以我们没有再问一个如何打印int的问题了
格雷格,

3

CGSize具有类型的成员宽度和高度CGFloat。您可以使用以下命令打印它们

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

3

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

      NSLog(@"self.view.Frame=%@", NSStringFromCGRect(self.view.frame));
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.