如何在运行时找出屏幕上的哪些UIVIews

时间:2012-11-13 19:17:24

标签: objective-c ios xcode

我正在制作一款iPhone应用程序,它具有构建视图的复杂方式, 我处于某些UI行为不一致且某些UI视图未正确显示的程度, 我没有涉及很多细节,我在运行时寻找一种方法来找出屏幕上的每个UI元素,它的位置以及我可以获得的任何信息(UI堆栈,分层,UIVIew是除了什么之外,开发人员可以使用

感谢。

2 个答案:

答案 0 :(得分:3)

在调试控制台中,将recursiveDescription消息发送到最顶层的视图。

(lldb) po [self.view recursiveDescription]
(id) $1 = 0x0929f000 <UIView: 0x944be30; frame = (0 20; 320 548); autoresize = RM+BM; layer = <CALayer: 0x944be90>>
   | <UITableView: 0xab02800; frame = (0 0; 320 548); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x9449920>; layer = <CALayer: 0x944bc70>; contentOffset: {0, 0}>
   |    | <UIImageView: 0x944c330; frame = (0 541; 320 7); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x944c390>>
   |    | <UIImageView: 0x944c440; frame = (313 404; 7 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x944c4e0>>
(lldb) 

答案 1 :(得分:2)

Spark Inspector Main View

我是一个名为Spark Inspector的工具的作者,它允许您在应用程序的UIView运行时查看并与之交互。我把它放在一起是因为我发现自己一直使用-recursiveDescription并且倾注在控制台输出上很烦人 - 我想这可能正是你所需要的。您可以在应用中添加一个框架,让检查器工具连接并向您显示您的视图,而不是调用-recursiveDescription

我还建议您查看其他两个工具:PonyDebuggerDCIntrospect。他们需要更多的设置,但如果你发现自己需要调试视图,它们都是救生员。