AutoRotate / InterfaceOrientation导致不平衡调用警告

时间:2014-03-25 16:22:37

标签: ios iphone objective-c

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来消除警告,但是我不想要这种行为。

在没有运行时警告的情况下,如何在推/弹时保持我想要的旋转行为?

0 个答案:

没有答案