画面に 1 つの UIView があり、それだけだとしましょう。他のUIViewにネストされておらず、スーパービューがなく、孤独です。
では、frame プロパティはどうなるでしょうか。
ここで見つけたフレームの定義:「ビューのフレームは、スーパービューの座標系におけるその長方形の位置です。」
画面に 1 つの UIView があり、それだけだとしましょう。他のUIViewにネストされておらず、スーパービューがなく、孤独です。
ビューが表示されている場合は、スーパービューが必要です。UIWindow
もUIView
(`UIView から派生) であるため、メイン ウィンドウに追加しても、スーパービューのサブビューのままです。
さて、参考文献を読んだらUIWindow
:
UIWindow クラスは、アプリがデバイス画面に表示するビューを管理および調整する、ウィンドウと呼ばれるオブジェクトを定義します。
またはここ:
iOS では、window オブジェクトにアプリのビューが含まれており、デバイス ディスプレイでの表示を管理します。ウィンドウに関連付けられた画面オブジェクトは、現在使用中の特定のデバイス ディスプレイを表します。もしも
そのため、UIWindow
フレームはディスプレイ座標系で定義されます。
そしてUIScreen
参照から:
UIScreen オブジェクトには、デバイスの画面全体の境界四角形が含まれています。アプリケーションのユーザー インターフェイスを設定するときは、このオブジェクトのプロパティを使用して、アプリケーションのウィンドウに推奨されるフレームの四角形を取得する必要があります。
一般的に、ビューのフレームとは何かは、ビューとその作成方法によって異なります。ビューを作成するときは、通常、次を使用します。
[[UIView alloc] initWithFrame:...];
CGRect
そのため、ビューがスーパービューに追加されていない場合でも、ビューのフレームが引数として渡されます。
を使用addSubview
してそのビューを他のビューに追加すると、インスタンス化時に指定した情報を使用して、スーパービューの座標系で追加されたビューの位置が決定されます。
つまり、UIView のフレームは単なるビューの属性です。ビューを表示する必要がある場合、この属性はスーパービュー内のビューの幾何学的位置として解釈されます。
さらに、ビューのフレームは、スーパービューから削除するだけでは変更されません。ビューに再度追加した場合でも、同じままです。(H2CO3さん、コメントありがとうございます)
お役に立てれば。
画面にUIViewがある場合、少なくともアプリのメインUIWindowに表示されます。したがって、最初のView ControllerのUIVIewは、メインUIWindowのフレーム内にあります。