在开发 iOS 应用程序时,我发现 po [[UIWindow keyWindow] recursiveDescription]
在调试器中使用非常有用。但是,我想知道是否有一种工具可以优雅地表示输出以获得更好的可读性?
问问题
1069 次
5 回答
2
这是我以前写的一个方法:
- (void)logView:(UIView*)v index:(int)i
{
NSMutableString *str = [NSMutableString string];
for (int u = 0; u<i; u++) { [str appendString:@"| "]; }
[str appendFormat:@"<%@ %p frame:%@>", v.class, v, NSStringFromCGRect(v.frame)];
// of course you can change it to display your accessibility hint/label
printf("%s\n", [str UTF8String]);
for (UIView *vv in v.subviews) { [self logView:vv index:i+1]; }
}
像这样称呼它:[self logView:myView index:0];
样本输出:
<UITextField 0x6b30010 frame:{{20, 13}, {280, 31}}>
| <UITextFieldRoundedRectBackgroundView 0x6b31e00 frame:{{0, 0}, {280, 31}}>
| | <UIImageView 0x6b31fe0 frame:{{0, 0}, {0, 0}}>
| | <UIImageView 0x6b32070 frame:{{0, 0}, {0, 0}}>
| | <UIImageView 0x6b320e0 frame:{{0, 0}, {0, 0}}>
于 2012-07-27T12:49:38.937 回答
1
我通常使用 po,但我不久前发现了这个工具,并打算尝试一下,但没有。
它将自己嵌入到您的应用程序中,并将自己公开为一个小型 Web 应用程序,因此您可以在使用该应用程序时查看视图层次结构的状态。
http://blog.thepete.net/blog/2011/05/01/inspect-state-of-our-running-ios-apps/
编辑:
添加评论中提到的sparkinpector 。我检查了它,它看起来很酷 - 特别是如果您以编程方式创建视图。
于 2012-07-27T12:32:24.307 回答
0
使用显示应用程序:http ://revealapp.com 。
这可能会有所帮助。
于 2013-08-16T10:40:44.407 回答
0
这是一种私人方式,
编写以下代码,
NSLog("%@",[[[UIApplication sharedApplication] keyWindow] performSelector(@selector(recursiveDescription))]);
同样对于任何视图:
NSLog("%@",[view performSelector(@selector(recursiveDescription))]);
这将为您提供整个视图层次结构。
请注意,在您的应用程序中使用此方法后,请勿将您的代码提交给苹果,因为这是私有 api。只是,仅将这些用于调试目的。
于 2014-08-04T10:50:20.933 回答
0
肯定有的。在过去的几年里,我们已经取得了长足的进步,这-recursiveDescription
是查看视图层次结构的一种非常痛苦的方式——尤其是当您的界面很复杂时。看看这个答案以获得一些更新的解决方案:
于 2013-06-02T19:44:42.523 回答