iOS7中有很多关于AutoRotate的问题,虽然我已经阅读了很多问题,但我仍然不确定如何解决我的问题。
我有一个(主要)ViewController应该保留Portrait,它会启动一个View,它应该自动旋转到Landscape(左或右)但从不到Portrait或UpsideDown。 这工作正常,但是当我弹回ViewController时,我得到一个“不平衡的调用开始/结束外观转换...”消息,即使View在视觉上正确弹出。
我在旋转工作正常时遇到了很多问题,我在SO上发现了这个: 在我的AppDelegate中,我添加了:
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
NSUInteger orientations=UIInterfaceOrientationMaskAll;
if(self.window.rootViewController){
UIViewController *presentedViewController=[[(UINavigationController *)self.window.rootViewController viewControllers] lastObject];
orientations = [presentedViewController supportedInterfaceOrientations];
}
return orientations;
}
在我的(肖像)ViewController中:
- (BOOL)shouldAutorotate{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
在我的(风景)视图中:
- (BOOL)shouldAutorotate{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
我已经能够通过将UI控制器从UIInterfaceOrientationMaskPortrait更改为UIInterfaceOrientationMaskAll来消除警告,但是我不想要这种行为。
在没有运行时警告的情况下,如何在推/弹时保持我想要的旋转行为?