2

画面に 1 つの UIView があり、それだけだとしましょう。他のUIViewにネストされておらず、スーパービューがなく、孤独です。

では、frame プロパティはどうなるでしょうか。

ここで見つけたフレームの定義:「ビューのフレームは、スーパービューの座標系におけるその長方形の位置です。」

4

2 に答える 2

4

画面に 1 つの UIView があり、それだけだとしましょう。他のUIViewにネストされておらず、スーパービューがなく、孤独です。

ビューが表示されている場合は、スーパービューが必要です。UIWindowUIView(`UIView から派生) であるため、メイン ウィンドウに追加しても、スーパービューのサブビューのままです。

さて、参考文献を読んだらUIWindow

UIWindow クラスは、アプリがデバイス画面に表示するビューを管理および調整する、ウィンドウと呼ばれるオブジェクトを定義します。

またはここ

iOS では、window オブジェクトにアプリのビューが含まれており、デバイス ディスプレイでの表示​​を管理します。ウィンドウに関連付けられた画面オブジェクトは、現在使用中の特定のデバイス ディスプレイを表します。もしも

そのため、UIWindowフレームはディスプレイ座標系で定義されます。

そしてUIScreen参照から:

UIScreen オブジェクトには、デバイスの画面全体の境界四角形が含まれています。アプリケーションのユーザー インターフェイスを設定するときは、このオブジェクトのプロパティを使用して、アプリケーションのウィンドウに推奨されるフレームの四角形を取得する必要があります。

一般的に、ビューのフレームとは何かは、ビューとその作成方法によって異なります。ビューを作成するときは、通常、次を使用します。

[[UIView alloc] initWithFrame:...];

CGRectそのため、ビューがスーパービューに追加されていない場合でも、ビューのフレームが引数として渡されます。

を使用addSubviewしてそのビューを他のビューに追加すると、インスタンス化時に指定した情報を使用して、スーパービューの座標系で追加されたビューの位置が決定されます。

つまり、UIView のフレームは単なるビューの属性です。ビューを表示する必要がある場合、この属性はスーパービュー内のビューの幾何学的位置として解釈されます。

さらに、ビューのフレームは、スーパービューから削除するだけでは変更されません。ビューに再度追加した場合でも、同じままです。(H2CO3さん、コメントありがとうございます)

お役に立てれば。

于 2013-01-09T18:34:18.427 に答える
1

画面にUIViewがある場合、少なくともアプリのメインUIWindowに表示されます。したがって、最初のView ControllerのUIVIewは、メインUIWindowのフレーム内にあります。

于 2013-01-09T18:38:28.517 に答える