模式视图控制器强制在iOS 6中的横向方向
我有一个以纵向模式呈现的UITabBarController。 在其中一个选项卡上,我有一个button,显示一个UIViewController模态(一个简单的故事板segue执行操作)。
我想要在横向模式下显示此模式视图,但是我无法自动旋转。
我有这在模态视图控制器
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); }
我已经添加landscapeLeft到.plist支持的方向(虽然这也允许TabBar旋转,我不想)
我也将其添加到模态视图的ViewDidLoad
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft;
但我不能让它自己旋转。
谢谢
编辑—-
看来应该AutoRotate甚至不被称为!
此外,我试图检测方向和下面的代码总是显示2,无论方向!
if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait) { NSLog(@"1"); self.hostView.frame = CGRectMake(0, 60, 200, 255); } else { NSLog(@"2"); self.hostView.frame = CGRectMake(0, 45, 480, 255); }
编辑2 —
我的错。 我想我应该提到我正在使用iOS 6.显示器在iOS 5上自动旋转。shouldAutorotateToInterfaceOrientation已弃用,所以我需要阅读新的方法。
iOS 6.0发行说明
“更多的责任是转移到应用程序和应用程序委托。现在,iOS容器(如UINavigationController)不咨询他们的孩子,以确定他们应该自动旋转。
-(BOOL)shouldAutorotate
任何容器(如UINavigationController)UIViewController将不会从IOS6调用。
尝试使用类添加方法到现有的UINavigationController类的解决scheme。
在shouldAutorotate方法中,可以在self.viewControllers的每个视图控制器中调用shouldAutorotate方法。 事实上,你可以传递给你的子视图控制器。
如果你想在iOS6中强制旋转,你的rootviewController应该实现这些方法:
- (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; } - (BOOL)shouldAutorotate { return YES; }
在iOS 6中,似乎这种方法可能有助于强制iOS 6的特定方向。
- (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; }
我仍然试图让它工作,并会更新任何调查结果。
我在我的应用程序中完成此操作,并通过shouldAutoRotateToInterfaceOrientation执行此操作,与您稍有不同:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) return (YES); return (NO); }
对于iOS 6,您还必须设置window.rootViewController = {您的根视图控制器}; 在你的应用程序委托。 我希望这是你的问题