我正在使用NSLog检查一个UITextView.我的代码中有以下日志记录:
NSLog(@"textView: %@",textView); NSLog(@"textView.frame: %@",textView.frame); NSLog(@"[textView frame]: %@",[textView frame]);
在控制台的输出中,我得到以下内容:
2010-11-29 22:00:38.252 MenuMaker[57602:207] textView: <UITextView: 0x3b3afe0; frame = (0 0; 320 387); text = 'blah...'; clipsToBounds = YES; autoresize = RM+BM; layer = <CALayer: 0x3b3afa0>> 2010-11-29 22:00:38.254 MenuMaker[57602:207] textView.frame: (null) 2010-11-29 22:00:38.254 MenuMaker[57602:207] [textView frame]: (null)
第一行输出,因为它包含’frame =(0 0; 320 387)’位,导致我相信UITextView的框架变量都是设置的.但为什么在这种情况下接下来的两行显示为空?他们不应该转储框架的值吗?
提前致谢
解决方法
正如其他人所指出的,CGRect只是一个结构,因此缺少一种描述方法(这是NSString的stringWithFormat静态方法 – NSLog使用的格式字符串替换%@).因此,您不能直接将其传递给NSLog.
但是,不需要像建议一样输出任何值. Cocoa提供了许多内置的方法,将多个Core Graphics结构渲染为一个字符串:
NSStringFromCGRect() NSStringFromCGPoint() NSStringFromCGSize() NSStringFromCGAffineTransform()
等等.因此,以字符串的形式输出CGRect变得非常容易:
NSLog(@"%@",NSStringFromCGRect(rect));
您可以在“字符串转换”下找到所有这些帮助方法here.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。