當調試器在斷點處停止,我無法找到我的任何UIViews的框架在那裏。iPhone - 是否有可能在Xcode調試器中檢查UIView的框架?
是否有可能做到這一點?
編輯:啓動賞金由於缺乏響應的。爲了清楚起見,我正在尋找的是一種無需添加額外調試代碼即可查看框架的方法。
而且,如果答案是「不,你不能這樣做」,獎金會去的,爲什麼你可以看到一些類的成員,但不是別人的最好說明。
當調試器在斷點處停止,我無法找到我的任何UIViews的框架在那裏。iPhone - 是否有可能在Xcode調試器中檢查UIView的框架?
是否有可能做到這一點?
編輯:啓動賞金由於缺乏響應的。爲了清楚起見,我正在尋找的是一種無需添加額外調試代碼即可查看框架的方法。
而且,如果答案是「不,你不能這樣做」,獎金會去的,爲什麼你可以看到一些類的成員,但不是別人的最好說明。
是的,你可以做到這一點。在調試時,在變量檢查器中找到感興趣的UIView。按住Control鍵點按它並選擇「將說明打印到控制檯」。例如,我這樣做是在一個UIViewController的_view伊娃和下列出現在控制檯:
Printing description of _view:
<UIView: 0x25b460; frame = (0 0; 320 480); autoresize = W+H; layer = <CALayer: 0x26b740>>
有時他們剛出來的範圍由你到達那裏的時間。
它們打印到控制檯:
NSLog('Frame: %d, %d, %d, %d', frame.origin.x, frame.origin.y, frame.size.width, frame.size.height);
當然,有很多方法可以做到,如果我提前編寫代碼。 我想要的是一種不需要預先編碼的方法。因此,在跑步過程中,如果我想看到X的框架,我可以。 – 2010-08-08 20:21:41
如果你要這樣,也試試NSStringFromCGRect(CGRect矩形) – 2013-08-04 23:47:58
回到2010年這些是整數?我想知道他們什麼時候把它們改成了漂浮物。 – braden 2015-02-28 03:54:22
如果你去調試器面板,你可以在你在一個斷點類型本中:
(gdb) print (CGRect) [self frame]
$1 = {
origin = {
x = 0,
y = 0
},
size = {
width = 100,
height = 100
}
}
當使用console debugger時,您可以按向上箭頭鍵循環前面的命令。在不輸入命令的情況下按下回車鍵將重複上一條命令。
po [[[[UIApplication sharedApplication]windows] objectAtIndex:0] recursiveDescription]
將打印出整個視圖heirachy但似乎只在gdb的工作,而不是LLVM
發現LLDB答案。例如,這個工程
(lldb) print (CGRect)[((UIView *)[[[self backIV] subviews] objectAtIndex:1]) frame]
要獲得與NSString類似的調試器的幀信息,請使用NSStringFromCGRect(someView。幀)
NSLog(@"My view frame: %@", NSStringFromCGRect(myView.frame));
有趣的是,使用getter方法返回視圖的框架的工作原理:
print (CGRect)[view frame]
這給了預期的結果:
(CGRect) $2 = origin=(x=0, y=20) size=(width=320, height=48)
但是,如果您嘗試使用點符號,我聽說它經常被稱爲僅爲'語法糖'提供:
print (CGRect)view.frame
您會收到以下錯誤:
error: C-style cast from '<unknown type>' to 'CGRect' is not allowed
在Xcode中,進入控制檯,輸入:
po viewName
如果執行的內部代碼視圖,你可以:
po self
這將輸出一些查看詳細信息,如下所示:
<UIView: 0x9cca0f0; frame = (0 0; 320 480); layer = <CALayer: 0x9ccabe0>>
在Xcode 5.1.1,你可以一個變量,它是一個UIView懸停,你會看到以下類型酥料餅的:
如果你點擊「i」按鈕,輸出的以下類型將被印在調試器的控制檯:
<UIImageView: 0xa49ca90; frame = (0 0; 640 360); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xa46c1c0>>
這是檢查一個UIView的框架的另一種方式。
我更喜歡用於打印的簡短格式,即'p'來打印lldb中的幀。對於例如
p (CGRect)[view frame]
使用Xcode 4,您經常無法以這種方式觀看視圖,或者您可以在輸出中獲得空白結果 - Xcode/clang/lldb中的所有錯誤。此外,這個答案不會讓你獲得其他細節,比如「view.bounds」。看到下面的其他答案 – Adam 2012-10-06 00:18:41
或者你可以輸入'po [view_ivar frame],你會看到: $ 1 = 0x00173c50; layer = ; contentOffset:{0,0}> –
Gin
2013-08-15 20:24:48
你可以右鍵點擊,而不是按住Ctrl鍵點擊 – onmyway133 2014-10-09 08:47:26