UIView のカスタム サブクラスがあります。BottomBox と呼びましょう。
BottomBox には、次のオーバーライド メソッドがあります。
-(void)setBounds:(CGRect)bounds;
と
-(void)setFrame:(CGRect)frame;
それぞれに [super set*:*] を呼び出し、現在および新しい CGRect のログを記録し、両方にブレークポイントを設定します。
BottomBox オブジェクトには autoresizingMask が設定されています。
bottombox1.autoresizingMask =
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin;
それらは画面の下部に配置されます。
BottomBox オブジェクトにはメインの .layer プロパティのサブレイヤーが含まれており、これらのサブレイヤーが変換され、これらのレイヤーの境界ボックスが BottomBox オブジェクトのビュー境界の領域の外に出ます。これにより、frame/bounds アクセサーが調整された境界値を返します。これは私が説明したものです。
しかし、デバイスの向きを変更すると、autoresizingMask プロパティで幅や高さの柔軟性が定義されていないにもかかわらず、BottomBox オブジェクトのサイズが異常に変更されます。私の経験では、境界/フレームの高さは調整されていませんが、幅は非常に歪んでいます。
今、境界とフレームの本当の意味を単に誤解していると感じています。おそらく実際には、サブビューとサブレイヤーに基づいて、アクセスごとにオンザフライで計算されます。
これらを調整できる他の方法があるかどうか知りたいのですが、おそらく何かを見落としています。