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

任何人尝试最新的iOS 6testing版(版本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 6似乎只是越野车

自动旋转在iOS 6中正在改变。在iOS 6中,不推荐使用UIViewControllershouldAutorotateToInterfaceOrientation:方法。 在它的地方,你应该使用supportedInterfaceOrientationsshouldAutorotate方法。

在这里阅读更多 。

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

插入self.window.rootViewController = navController;

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

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

当我加载一个视图,然后我做([self.navigationCOntroller setEnableLandscape:(BOOL)false])。 这样你就可以完全控制你的导航控制器。

注意:我尝试覆盖导航控制器的方法,但似乎只是被忽略。 (这只发生在iOS 6.0以上),还没有testing6.1,所以不知道它是否得到修复(请告诉我是否它)