任何尝试使用最新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似乎只是错误
答案 0 :(得分:10)
iOS 6中的自动旋转正在发生变化。在iOS 6中,不推荐shouldAutorotateToInterfaceOrientation:
UIViewController
方法。取而代之的是,您应该使用supportedInterfaceOrientations
和shouldAutorotate
方法。
答案 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,所以不确定它是否得到修复(如果有的话请告诉我)