4

ビューがウィンドウに追加された場合、デバイスが横向きであっても向きは縦向きに設定されます。アプリのデリゲート 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];

ビューを適切な向きにする方法はありますか?

4

1 に答える 1

1

ビューコントローラのshouldAutorotateToInterfaceOrientationに正しいロジックがあることを確認してください

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return YES; //this supports all orientations
}

InterfaceBuilderでリンクしている場合は、ビューとビューコントローラの両方が希望の初期方向に設定されていることも確認してください。(ビューとビューコントローラーを回転させるための小さな矢印が右上隅にあります)

それでも問題が解決しない場合は、UINavigationControllerなどを使用していますか?Portait以外のものをサポートする場合は、UINavigationControllerをサブクラス化する必要があり、AutorotateToInterfaceOrientationを実装する必要があります。

于 2011-01-26T20:07:49.887 に答える