IOS6屏幕旋转,不使用脚本



任何正在尝试最新iOS 6测试版(版本2或3)的人都有同样的自动旋转不起作用的经历?

我不是在使用故事板,而是纯粹的导航控制:

self.navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
[self.window addSubview:navController.view];

并拥有:

- (BOOL)shouldAutorotateToInterfaceOrientation: ](UIInterfaceOrientation)interfaceOrientation
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
    return YES;
}
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskAllButUpsideDown;
}

但是IOS根本没有支持,在3GS/4S和4.3,5.0.5.1模拟器上与以前的所有IOS都可以很好地工作,但IOS 6似乎只是有缺陷的

iOS 6中的自动旋转正在发生变化。在iOS 6中,不赞成使用UIViewControllershouldAutorotateToInterfaceOrientation:方法。取而代之的是,您应该使用supportedInterfaceOrientationsshouldAutorotate方法。

点击此处阅读更多信息。

而不是[self.window addSubview:navController.view];

插入self.window.rootViewController = navController;

解决方案是:由于我的应用程序试图支持4.3+,我必须使用导航控制器来切换每个视图。

通过ios6似乎代表了导航控制器,我必须定义自己的导航控制器,并设置条件和功能来改变其旋转行为。

当我加载视图时,我会执行([self.navigationCOcontroller setEnableLandscape:(BOOL)false])。这样你就有了导航控制器的完整控制器。

注意:我确实尝试过覆盖导航控制器方法,但似乎只是被忽略了。(这种情况也只发生在ios 6.0上),还没有测试6.1,所以不确定它是否得到了修复(如果得到了修复,请告诉我)

最新更新