6

私はコードでモーダルビューを提示しています:

 [self presentViewController:movieViewController animated:YES completion:^{
     // completed
 }];

movieViewController内では、コントローラーは次のように閉じられます。

[self dismissViewControllerAnimated:YES completion:^{
    // back to previous view controller
}];

現時点では、すべてのビューコントローラを縦向きと2つの横向きで表示できます。

モーダルビューコントローラを除くすべてのビューコントローラをポートレートに制限するにはどうすればよいですか?したがって、モーダルビューコントローラは3つの方向で表示され、他のすべては1つの方向で表示されます。

4

1 に答える 1

21

appDelegate で:

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
        return UIInterfaceOrientationMaskAllButUpsideDown;
    }

メソッドを持つ特別な UINavigationController サブクラス (ナビゲーション コントローラーを使用している場合):

- (NSUInteger)supportedInterfaceOrientations {
    if (self.topViewController.presentedViewController) {
        return self.topViewController.presentedViewController.supportedInterfaceOrientations;
    }
    return self.topViewController.supportedInterfaceOrientations;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return self.topViewController.preferredInterfaceOrientationForPresentation;
}

各View Controllerは、サポートされている独自の向きと優先プレゼンテーションの向きを返す必要があります。

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}

私のアプリは縦向きで動作しますが、ビデオ プレーヤーはモーダル VC として次のように開きます。

 - (NSUInteger)supportedInterfaceOrientations {
     return UIInterfaceOrientationMaskAllButUpsideDown;
 }

 - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
     return UIInterfaceOrientationLandscapeLeft;
 }

それは私にとって完璧に機能します。

于 2013-02-27T01:02:24.207 に答える