iOS 6轮换问题 - 从提供的模态视图控制器无法轮换

ryr*_*yan 16 objective-c ios ios6

我有一个MainViewController,它有一个按钮,通过翻转horizo​​ntailly推动一个新的视图(InfoViewController).像这样:

controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
Run Code Online (Sandbox Code Playgroud)

MainView控制器支持Portrait和PortraitUpsideDown.像这样:

- (BOOL)shouldAutorotate {
    return YES;    
}

- (NSUInteger)supportedInterfaceOrientations {    
    return (UIInterfaceOrientationMaskPortrait | 
            UIInterfaceOrientationMaskPortraitUpsideDown);
}
Run Code Online (Sandbox Code Playgroud)

在我的InfoViewController中,它还说明了上面的代码.在我的AppDelegate中,它在LaunchOptions中有这个:

[self.window setRootViewController:self.mainViewController];
Run Code Online (Sandbox Code Playgroud)

在我的app.plist文件中,它支持所有方向.这是因为其他观点也需要支持景观.所以在我的MainViewController和InfoViewController上我只需要Portrait和PortraitUpsideDown.但另一种观点我需要所有的观点.

我的MainViewController工作正常,但我的InfoViewController适用于所有方向.

我正在努力让这个在iOS6中运行起来.我已经研究了其他帖子,并尝试过其他人提供的帮助,但没有任何运气.请有人帮助我实现这一点谢谢.我是Objective-C的新手:p

Han*_*son 26

不支持app plist文件中的所有方向,只支持根视图控制器支持的方向.

iOS 6中的自动旋转正在发生变化.在iOS 6中,shouldAutorotateToInterfaceOrientation:不推荐使用UIViewController 的方法.取而代之的是,你应该使用supportedInterfaceOrientationsForWindow:shouldAutorotate方法:

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAllButUpsideDown;    
}
Run Code Online (Sandbox Code Playgroud)

模态ViewControllers不再在iOS 6中获得旋转调用:不再在任何视图控制器上调用willRotateToInterfaceOrientation:duration:, willAnimateRotationToInterfaceOrientation:duration:,didRotateFromInterfaceOrientation:方法,这些控制器对自身进行全屏演示 - 例如使用以下方法调用的那些:presentViewController:animated:completion:.

您可以让显示模态视图控制器的视图控制器通知它旋转.此外,现在您使用:presentViewController:animated:completion:来呈现视图控制器.presentModalViewController:animated:已弃用,您在代码中使用.

  • 模态视图控制器不再在iOS 6中获得旋转调用 (7认同)