2012-11-13 32 views
0

我正在研究一個iPhone應用程序,它有一個複雜的方式來構建它的視圖, 我在某些UI行爲不一致的地步,一些UI視圖沒有正確呈現,我沒有深入細節,我正在尋找一種方式來找出屏幕上的每個UI元素,它的位置以及我可以獲得的任何信息(UI堆棧,分層,這是UIVIew是什麼)是可用於開發人員/如何找出哪些UIVIews在運行時在屏幕上

謝謝。

+1

關於你的問題,試着訪問UIWindow,使用循環的枚舉器來遍歷它的子視圖並打印它的框架。 – iDev

回答

3

在調試控制檯中,將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) 
+0

感謝德米特里,現在這個輸出,它的原點是它的每個視圖相對於其父或屏幕?如(0 0)我在電話的左上角顯示所有視圖,或者每個視圖基於其父視圖? – Kalamantina

+2

框架總是相對於父視圖。 –

2

Spark Inspector Main View

我是一個工具的作者叫Spark Inspector,允許您查看並處理應用程序的UIViews,而它的運行交互。我把它放在一起,因爲我發現自己一直在使用-recursiveDescription,並且在控制檯輸出上很煩人 - 我認爲這可能就是您所需要的。您不必調用-recursiveDescription,而是向您的應用程序添加一個框架,讓檢查器工具連接並向您顯示視圖。

還有兩個其他工具我建議檢查一下:PonyDebuggerDCIntrospect。他們需要更多的設置,但如果你發現自己需要調試視圖,他們都是救生員。

相關問題