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中,不推荐使用UIViewController
的shouldAutorotateToInterfaceOrientation:
方法。 在它的地方,你应该使用supportedInterfaceOrientations
和shouldAutorotate
方法。
在这里阅读更多 。
而不是[self.window addSubview:navController.view];
插入self.window.rootViewController = navController;
解决方法是:由于我的应用程序试图支持从4.3+,我不得不使用导航控制器来做每个视图切换。
由ios6似乎代表导航控制器,我必须定义我自己的导航控制器,并设置条件和function,以改变其旋转行为。
当我加载一个视图,然后我做([self.navigationCOntroller setEnableLandscape:(BOOL)false])。 这样你就可以完全控制你的导航控制器。
注意:我尝试覆盖导航控制器的方法,但似乎只是被忽略。 (这只发生在iOS 6.0以上),还没有testing6.1,所以不知道它是否得到修复(请告诉我是否它)