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

Vad*_*ick 167 cocoa-touch uikit ios

是否有GUI工具检查iOS应用程序的视图层次结构?我正在考虑Webkit的Web检查器或类似的工具.我正在调试布局问题,例如具有错误位置或大小的视图,或者未正确包含其父级的子级.目前我必须添加断言,手动测试这些不同的条件,或者在不同的视图上设置不同的背景颜色,并且你可以想象,这是一个非常繁琐的方法.

我查看了仪器UI recorder,但它只记录和播放UI动作,并且无论如何,仅适用于Mac应用程序.

有更好的解决方案吗?

Sim*_*een 260

我不知道是否有GUI视图检查工具,但我对UIView的调试方法有一些运气: -recursiveDescription

如果你在调试器中暂停程序并将其输入到GDB中(编辑:也适用于LLDB)

po [[UIWindow keyWindow] recursiveDescription]

您将获得整个视图层次结构的打印输出.您还可以在特定视图上调用它以获取该视图的视图层次结构的打印输出.

浏览你从中得到的信息可能有点乏味,但事实证明它对我很有用.

感谢这个博客文章,其中谈到了这种方法并且也与此有关,但很难找到Apple技术说明.


Lev*_*lum 163

Xcode 6现在具有内置的Reveal App和Spark Inspector三维视图层次结构检查功能.

在此输入图像描述

在应用程序运行时单击"调试视图层次结构"按钮以暂停执行并检查当前时刻的视图.

在此输入图像描述

有关Apple的文档的更多信息.

  • 如果视图调试选项不可用,请参阅http://stackoverflow.com/questions/24040322/xcode-5-6-view-debugging-always-grayed-out. (5认同)

liv*_*ech 46

显示应用截图

奇怪的是,现在还有另一种选择,http://revealapp.com/,截至本文的帖子是开放(免费)测试版.你可以看到它是另一个视觉检查员.

编辑2014-04-05:显示已经超出测试版,不再免费.然而,有一个为期30天的试验.

  • 不再是免费的. (2认同)

Dam*_*ski 35

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


liv*_*ech 17

在此输入图像描述

为了让这个帖子保持最新状态,我最近一直在玩Spark Inspector.它不是免费的,但它非常好.


AVE*_*imi 6

免费:只需在检查员中输入:

po [[UIWindow keyWindow] recursiveDescription]
Run Code Online (Sandbox Code Playgroud)

商业:http://revealapp.com/我测试了revealapp的beta版本,但它有好处但有bug.另一个商业工具:http://sparkinspector.com/它的工作无缝.


Sco*_*sak 6

FLEX调试器提供了一个在应用程序视图检查,使您可以修改正在运行的应用程序的UI.它还记录网络请求.

https://github.com/Flipboard/FLEX

在此输入图像描述


Vla*_*lad 6

斯威夫特4.

iOS:

extension UIView {

   // Prints results of internal Apple API method `recursiveDescription` to console.
   public func dump() {
      Swift.print(perform(Selector(("recursiveDescription"))))
   }
}
Run Code Online (Sandbox Code Playgroud)

macOS:

extension NSView {

   // Prints results of internal Apple API method `_subtreeDescription` to console.
   public func dump() {
      Swift.print(perform(Selector(("_subtreeDescription"))))
   }
}
Run Code Online (Sandbox Code Playgroud)

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