我正在开发一个 iPhone 应用程序,该应用程序具有复杂的视图构建方式,我正处于一些 UI 行为不一致并且一些 UI 视图没有正确呈现的地步,没有深入了解很多细节,我我正在寻找一种在运行时找出屏幕上每个 UI 元素的方法,以及它的位置以及我可以获得的任何信息(UI 堆栈、分层、UIVIew 位于什么之上)是可用的开发商/
谢谢。
我正在开发一个 iPhone 应用程序,该应用程序具有复杂的视图构建方式,我正处于一些 UI 行为不一致并且一些 UI 视图没有正确呈现的地步,没有深入了解很多细节,我我正在寻找一种在运行时找出屏幕上每个 UI 元素的方法,以及它的位置以及我可以获得的任何信息(UI 堆栈、分层、UIVIew 位于什么之上)是可用的开发商/
谢谢。
在调试控制台中,将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)
我是名为Spark Inspector的工具的作者,该工具允许您在应用运行时查看应用的 UIView 并与之交互。我把它放在一起是因为我发现自己-recursiveDescription
一直在使用并且倾注在控制台输出上很烦人——我认为这可能正是你所需要的。您无需调用-recursiveDescription
,而是向您的应用程序添加一个框架,该框架允许检查器工具连接并显示您的视图。
我还建议检查其他两个工具:PonyDebugger和DCIntrospect。它们需要更多的设置,但如果您发现自己需要调试视图,它们都是救命稻草。