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

时间:2012-07-18 15:01:45

标签: iphone ios rotation

任何尝试使用最新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似乎只是错误

3 个答案:

答案 0 :(得分:10)

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

Read more here

答案 1 :(得分:7)

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

插入self.window.rootViewController = navController;

答案 2 :(得分:0)

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

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

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

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