在我的应用中,我有UITabBarController
,其中包含3 UINavigationController
。我可以冻结任何UIViewController
的方向。为此,我实施了UITabBarController
和UINavigationController
。但是当我从另一个位于Landscape中的UIViewController
推送时出现问题。新推出的UIViewController应该是纵向的,但它仍然在Landscape中。我知道问题可能不清楚所以我附加了scrrenshots。
让我们考虑它的VC-A。
按VC-A编辑进入此VC-B。 VC-B是:
这个VC-B应该始终是纵向的。 VC-A可以是横向或纵向。当VC-A处于横向状态时,我按下编辑,VC-B被推送,VC-B进入横向模式,虽然我在VC-B中实现了这些方法:
-(BOOL)shouldAutorotate {
return UIInterfaceOrientationMaskPortrait;
}
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
答案 0 :(得分:0)
你的shouldAutorotate
需要返回一个BOOL而不是掩码,所以代码应该是
-(BOOL)shouldAutorotate {
return YES;
}
答案 1 :(得分:0)
标签栏控制器或导航控制器中的所有子视图控制器必须具有相同的支持方向集。这将在以下文档的底部附近讨论。
https://developer.apple.com/library/ios/qa/qa1688/_index.html