6

我正在展示带有代码的模态视图:

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

在movieViewController中,控制器被解除:

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

目前,我所有的视图控制器都可以纵向和两个横向查看。

除了模态视图控制器,我如何将所有视图控制器限制为纵向?所以模态视图控制器可以在三个方向上看到,其他一切都在一个方向上。

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;
}

每个视图控制器都应该返回它自己支持的方向和首选的呈现方向:

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}

我的应用程序以纵向模式工作,但视频播放器以模态 vc 的形式打开:

 - (NSUInteger)supportedInterfaceOrientations {
     return UIInterfaceOrientationMaskAllButUpsideDown;
 }

 - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
     return UIInterfaceOrientationLandscapeLeft;
 }

它对我来说很完美,希望对我有帮助!

于 2013-02-27T01:02:24.207 回答