0
在圖片看看下面調試時,我們如何知道UIView的框架或其存儲方式?
我找的UIView,我無法找到這個所謂的_frame結構。
蘋果公司內部究竟是如何存儲UIView幀的?在調試過程中最簡單的方法是什麼?
在圖片看看下面調試時,我們如何知道UIView的框架或其存儲方式?
我找的UIView,我無法找到這個所謂的_frame結構。
蘋果公司內部究竟是如何存儲UIView幀的?在調試過程中最簡單的方法是什麼?
A UIView
不存儲其幀;它只是返回其圖層的框架。
A CALayer
也不存儲它的幀。當您向圖層請求其幀時,圖層將根據圖層的bounds
,position
,anchorPoint
和transform
計算幀。 (可能它緩存的計算frame
,但如果你拆開方法,你會發現代碼從其他屬性計算它。)
而一個CALayer
不存儲任何實例變量的屬性。相反,它有一個指向CA::Layer
實例的指針,該實例是一個私有的C++對象。該C++對象存儲圖層的屬性。 view->_layer->_attr.layer
字段是指向專用CA::Layer
實例的指針。
如果你想在調試器中看到一個視圖的幀,你必須給它發送一條消息。你可以要求它爲它的描述:
po _topBubble
或者,你可以要求它爲它的框架:
p (CGRect)[_topBubble frame]
很有啓發,一個簡單的問題:你會如何拆解 - [CALayer的幀]的方法來學習更多關於它是如何從其他屬性計算的? –
我在iPhone模擬器的QuartzCore庫上使用了[Hopper](http://www.hopperapp.com/)。 –
很酷,謝謝你:) –