0

下の写真を見てください

ここに画像の説明を入力

UIView を探していますが、いわゆる _frame 構造体が見つかりません。

AppleがUIViewフレームを内部的に正確に保存する方法は? そして、デバッグ中にそれを見つける最も簡単な方法は何でしょうか?

4

1 に答える 1

3

AUIViewはフレームを保存しません。レイヤーのフレームを返すだけです。

ACALayerもそのフレームを保存しません。boundsレイヤーにそのフレームを要求すると、レイヤーはレイヤーの、positionanchorPoint、およびに基づいてフレームを計算しtransformます。(計算された をキャッシュする可能性frameがありますが、メソッドを逆アセンブルする-[CALayer frame]と、他のプロパティから計算するためのコードが見つかります。)

そして、CALayerこれらのプロパティはインスタンス変数に保存されません。代わりに、CA::Layerプライベート C++ オブジェクトであるインスタンスへのポインターがあります。その C++ オブジェクトには、レイヤーのプロパティが格納されます。フィールドは、プライベートインスタンスへのview->_layer->_attr.layerポインターです。CA::Layer

ビューのフレームをデバッガーで見たい場合は、メッセージを送信する必要があります。その説明を尋ねることができます:

po _topBubble

または、そのフレームを要求することもできます:

p (CGRect)[_topBubble frame]
于 2012-10-23T23:38:37.877 に答える