ビューがウィンドウに追加された場合、デバイスが横向きであっても向きは縦向きに設定されます。アプリのデリゲート application:didFinishLaunchingWithOptions: メソッドにビューが追加されている場合、正しく機能します。ただし、ビューが後で追加された場合はそうではありません。
例として、ビューを切り替えるルーチンがあります。最も単純な形式は次のとおりです。
- (void)switchToNewViewController:(UIViewController *)newViewController {
if ([[window subviews]count]!=0) {
[[[window subviews]objectAtIndex:0] removeFromSuperview];
}
[window addSubview:newViewController.view];
}
これが didFinishLaunching 内から呼び出された場合、向きは正しいです。そうでない場合、向きは縦です。
最も単純なケースは、didFinishLaunching 内にあります。次の 2 行があります。
// The following line works
[self switchToNewViewController:fullScreenViewController];
// The following line which delays the method call until later results
// in incorrect orientation
[self performSelector:@selector(switchToNewViewController:) withObject:fullScreenViewController afterDelay:0.1];
ビューを適切な向きにする方法はありますか?