うまくいけば、以下が必要なすべてを提供します。
私のアプリには親ビューのフレームを調整する単一の行があり、影響を受けるサブビューは、autoresizingMask に対する期待どおりに適切に応答していません。
viewController.view サブビューには 1 つのサブビューがあり、すべてのマージンのサイズが変更され、フレームは 0,0,320,270 です。
viewController.view にはフレーム = 0,0,320,276 があります
viewController.view を 0,64,1024,704 にサイズ変更した後
1 つのサブビューが下部に固定されます。基本的に、サブビューに柔軟な下部マージンがない場合と同じ効果があります。
352,434,320,270。適切なサイズ、サイズ変更されていません。しかし、そのスーパービューの上部から 434 ポイント下に高さ 270 を足すと、スーパービューの高さである 704 になります。
サブビューの高さ 270 と 704 の間の 434 の差は、上下の余白の間でバランスが取れていると思います。
ただし、上マージンと下マージンの両方がサイズ変更するように指定されています。とても困惑しています。コードブラインドになってしまったのかもしれませんが、これはとても簡単です。
おそらくこれは、マージンがゼロで、別のマージンがゼロではない場合の特別な処理に関係しています。これまでにそのケースを実験したことはありません。
po [viewController.view サブビュー]
(id) $1 = 0x09696340 <__NSArrayM 0x9696340>(
< UIView: 0x9695790; フレーム = (0 0; 320 270); 自動サイズ変更 = LM+RM+TM+BM; 層 = < CALayer: 0x96957f0>>
)
(lldb) po viewController.view
(UIView *) $2 = 0x09695ab0 < UIView: 0x9695ab0; フレーム = (0 0; 320 276); 自動サイズ変更 = W+H; 層 = < CALayer: 0x9695b10>>
次に、スーパービューを変更する 1 行のコード:
viewController.view.frame = {...};
(lldb) po viewController.view
(UIView *) $3 = 0x09695ab0 < UIView: 0x9695ab0; フレーム = (0 64; 1024 704); 自動サイズ変更 = W+H; 層 = < CALayer: 0x9695b10>>
(lldb) po [viewController.view サブビュー]
(ID) $4 = 0x09696340 <__NSArrayM 0x9696340>(
< UIView: 0x9695790; フレーム = (352 434; 320 270); 自動サイズ変更 = LM+RM+TM+BM; 層 = < CALayer: 0x96957f0>>
)
編集-
問題は、私が気付いていない別のプロパティが有効になっている可能性があります。おそらく自動レイアウトや制約のようなものですが、自動レイアウトはオフになっています。また、スーパービューは、layoutSubviews に凝ったカスタム UIView サブクラスではありません。それはすべてプレーンな UIKit のものです。