是否有用于检查iOS应用程序视图层次结构的GUI工具?我在考虑Webkit的Web检查器或类似工具。我正在寻找调试布局问题的方法,例如视图或位置或大小错误,或者子项未正确包含在其父项中。当前,我必须添加断言来手动测试这些各种条件,或者在不同的视图上设置不同的背景颜色,并且可以想象,这是一种非常繁琐的解决方法。
我查看了Instruments的UI recorder
,但它仅记录和播放UI操作`,并且在任何情况下仅适用于Mac应用。
有更好的解决方案吗?
是否有用于检查iOS应用程序视图层次结构的GUI工具?我在考虑Webkit的Web检查器或类似工具。我正在寻找调试布局问题的方法,例如视图或位置或大小错误,或者子项未正确包含在其父项中。当前,我必须添加断言来手动测试这些各种条件,或者在不同的视图上设置不同的背景颜色,并且可以想象,这是一种非常繁琐的解决方法。
我查看了Instruments的UI recorder
,但它仅记录和播放UI操作`,并且在任何情况下仅适用于Mac应用。
有更好的解决方案吗?
Answers:
Xcode 6现在内置了3D视图层次结构检查功能,例如Reveal App和Spark Inspector。
在您的应用运行时,单击“调试视图层次结构”按钮以暂停执行并在当前时刻检查视图。
有关更多信息,请参阅Apple的文档。
我不知道是否有GUI视图检查工具,但是我对UIView上的调试方法有些幸运: -recursiveDescription
如果您在调试器中暂停程序并将其输入到GDB中(编辑:在LLDB中也有效)
po [[UIWindow keyWindow] recursiveDescription]
您将获得整个视图层次结构的打印输出。您还可以在特定视图上调用它,以获取该视图的视图层次结构的打印输出。
遍历您从中获得的信息可能有点乏味,但事实证明对我有用。
值得一提的是这篇博客,该博客讨论了这种方法,并与此有用的链接有关,但是很难找到Apple技术说明。
奇怪的是,现在还有另一个选项http://revealapp.com/,截止本文发布时,该选项处于开放(免费)测试版中。如您所见,它是另一个视觉检查器。
编辑2014-04-05:Reveal已超出Beta,并且不再免费。但是,有30天的试用期。
这个问题很旧,但是让我在这里将有关我开发的新工具的信息放到这里:https : //github.com/glock45/iOS-Hierarchy-Viewer
为了使该线程保持最新状态,我最近一直在使用Spark Inspector。它不是免费的,但是非常好。
免费:只需在检查器中输入以下内容:
po [[UIWindow keyWindow] recursiveDescription]
商业版:http : //revealapp.com/我测试了揭示版的beta版本,虽然有错误,但是很好。另一个商业工具:http : //sparkinspector.com/,它可以无缝运行。
迅捷4。
iOS:
extension UIView {
// Prints results of internal Apple API method `recursiveDescription` to console.
public func dump() {
Swift.print(perform(Selector(("recursiveDescription"))))
}
}
macOS:
extension NSView {
// Prints results of internal Apple API method `_subtreeDescription` to console.
public func dump() {
Swift.print(perform(Selector(("_subtreeDescription"))))
}
}
用法(在调试器中): po myView.dump()
使用Xcode 8和Swift 2.3 ,已批准的答案不再对我有用。这对我有用:
po UIApplication.sharedApplication().keyWindow?.recursiveDescription()
对于swift / Xcode 10,将其输入调试控制台:
po yourView.value(forKey: "recursiveDescription")!
它将为任何给定的打印出递归层次结构UIView
。