[英]How do I inspect the view hierarchy in iOS?
是否有用於檢查iOS應用程序視圖層次結構的GUI工具? 我在考慮Webkit的Web檢查器或類似工具。 我正在尋找調試布局問題的方法,例如視圖或位置或大小錯誤,或者子項未正確包含在其父項中。 當前,我必須添加斷言來手動測試這些各種條件,或者在不同的視圖上設置不同的背景顏色,並且可以想象,這是一種非常乏味的解決方法。
我查看了Instruments的UI recorder
,但它僅記錄和播放UI操作`,並且在任何情況下僅適用於Mac應用。
有更好的解決方案嗎?
我不知道是否有GUI視圖檢查工具,但是我對UIView的調試方法有些運氣: -recursiveDescription
如果您在調試器中暫停程序並將其輸入到GDB中(編輯:在LLDB中也有效)
po [[UIWindow keyWindow] recursiveDescription]
您將獲得整個視圖層次結構的打印輸出。 您也可以在特定視圖上調用它,以獲取該視圖的視圖層次結構的打印輸出。
遍歷您從中獲得的信息可能有點乏味,但事實證明對我有用。
值得一提的是這篇博客文章 , 該文章討論了這種方法,並與此有用的鏈接有關,但是很難找到Apple技術說明 。
Xcode 6現在內置了3D視圖層次結構檢查功能,例如Reveal App和Spark Inspector。
在您的應用程序運行時,單擊“調試視圖層次結構”按鈕以暫停執行並在當前時刻檢查視圖。
有關更多信息,請參閱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/我測試了showapp的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()
這會將所有內容轉儲到調試窗口中。(很難閱讀):(在iOS 10上運行,Xcode 8.3.3
po UIApplication.shared.keyWindow?.recursiveDescription()
使用Xcode 8和Swift 2.3,已批准的答案不再對我有用 。 這對我有用:
po UIApplication.sharedApplication().keyWindow?.recursiveDescription()
對於swift / Xcode 10,將其輸入調試控制台:
po yourView.value(forKey: "recursiveDescription")!
它將為任何給定的UIView
打印出遞歸層次結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.