IOS 6屏幕旋转而不使用故事板

phi*_*530 7 iphone rotation ios

任何尝试最新iOS 6测试版(版本2或3)的人都有相同的自动旋转体验吗?

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

self.navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
[self.window addSubview:navController.view];
Run Code Online (Sandbox Code Playgroud)

并有:

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

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

但IOS根本没有任何支持,适用于所有以前的iOS 3GS/4S和4.3,5.0.5.1模拟器,但iOS 6似乎只是马车

Joh*_*ith 10

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

在这里阅读更多.


Med*_*dhi 7

代替 [self.window addSubview:navController.view];

插入 self.window.rootViewController = navController;


phi*_*530 0

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

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

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

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