Interface Builder で作成され、向きに応じてサイズが変更されるように構成されたビューがあります。アプリケーションが縦向きモードのときにビューを作成してディスプレイに追加すると、すべてが完全に機能します。その後、デバイス/シミュレーターを回転させると、期待どおりにビューのサイズが変更されます。ただし、アプリが横向きモードのときにビューを追加すると、サイズが正しく変更されません。アプリがまだ縦向きモードであるかのように、ビューが作成され、サイズが変更されます。ビューは次のコードで追加されます。
self.viewController = [[MyViewController alloc] initWithNibName:nibName bundle:bundle];
[self addSubview:self.viewController.view];
ここでは魔法のようなことは何も起きていません。さらに、View Controller は以下を指定します。
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
繰り返しますが、ポートレート モードでビューが追加されている限り、期待どおりに機能します。ビューで autoresizingMask プロパティを手動で設定する、setNeedsLayout を呼び出す、layoutIfNeeded を呼び出すなど、さまざまなことを試しましたが、何も機能していないようです。フレームの幅と高さを手動で設定してビューのサイズを強制的に変更することはできますが、これはビューの動的な性質を壊します。たとえば、幅を手動で設定すると、コンテンツが再レイアウトされないため、高さが調整されません。
何か案は?