我如何检查iOS中的视图层次结构?

是否有一个GUI工具,检查iOS应用程序的视图层次结构? 我正在考虑Webkit的网站督察或类似的工具。 我正在寻找debugging布局问题,比如位置或大小错误的视图,或者父类中没有正确包含的孩子。 目前我不得不说,手动testing这些不同的条件,或者在不同的视图上设置不同的背景颜色,你可以想象,这是一个非常繁琐的方法去做。

我查看了Instruments的UI recorder ,但只logging和回放UI操作,无论如何,只能用于Mac应用程序。

有更好的解决scheme吗?

Xcode 6现在已经内置了3D视图层次结构检查,如Reveal App和Spark Inspector。

在这里输入图像描述

点击应用程序运行时的“Debug View Hierarchy”button,暂停执行并查看当前的视图。

在这里输入图像描述

苹果的文档更多信息。

我不知道是否有一个GUI视图检查工具,但我已经有一些与UIView上的debugging方法运气: -recursiveDescription

如果在debugging器中暂停程序并将其input到GDB中(编辑:也适用于LLDB)

po [[UIWindow keyWindow]recursion描述]

您可以打印出整个视图层次结构。 您也可以在特定视图上调用该视图以获取该视图的视图层次结构的打印输出。

通过从中得到的信息,可能会有些乏味,但是这对我来说是有用的。

值得一提的是, 这篇博客文章谈到了这个方法,也与这个有帮助,但很难find苹果的技术笔记 。

显示应用截图

奇怪的是,现在有另一个选项, http://revealapp.com/ ,这是一个开放的(免费)testing版。 你可以看到这是另一个视觉检查员。

编辑2014年4月5日:显示是testing版,不再免费。 但是有30天的试用期。

这个问题是旧的,但让我把信息在这里关于我开发的新工具: https : //github.com/glock45/iOS-Hierarchy-Viewer 在这里输入图像描述

在这里输入图像描述

为了保持这个线程更新,我最近一直在玩Spark Inspector 。 这不是免费的,但非常好。

免费:只需在检查员中input:

 po [[UIWindow keyWindow] recursiveDescription] 

商业: http ://revealapp.com/我testing了revealapp的beta版本,虽然有错误,但它是好的。 另一个商业工具: http : //sparkinspector.com/它的工作无缝。

FLEX Debugger提供了一个应用程序内视图检查器,允许您修改正在运行的应用程序中的UI。 它也loggingnetworking请求。

https://github.com/Flipboard/FLEX

在这里输入图像描述

这在debugging窗口中全部转储(难以阅读寿命):(使用iOS 10,Xcode 8.3.3

 po UIApplication.shared.keyWindow?.recursiveDescription() 

斯威夫特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")))) } } 

用法(在debugging器中): po myView.dump()

经过批准的答案不再适用于我,使用Xcode 8和Swift 2.3。 这是什么对我有用:

po UIApplication.sharedApplication().keyWindow?.recursiveDescription()