我想屏蔽某些UIViewController
的横向方向。我阅读了很多不同的东西来管理它,但我没有找到一个运行良好的解决方案。每次,方向都不会被阻挡,即使它应该是。
我有以下代码来阻止UIViewController
中没有横向旋转的横向:
- (BOOL)shouldAutorotate {
return NO;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
即使这样,视图也在横向旋转。
我错过了什么吗?
答案 0 :(得分:1)
你UIViewController
内有UINavigationController
吗?还是TabBarController
?在这种情况下,UIViewController
只是将该调用传递给UINavigationController
,您必须继承UINavigationController
并在那里实现这些方法,并检查导航控制器堆栈中的哪个视图控制器是想要旋转的那个,只允许旋转你想要的那个。
这就是我在项目中的表现:
- (NSUInteger)supportedInterfaceOrientations
{
if ([self.visibleViewController class] == [MyViewController class]) {
return UIInterfaceOrientationMaskAllButUpsideDown;
} else {
return UIInterfaceOrientationMaskPortrait;
}
}
您也可以尝试从导航控制器中询问有问题的UIViewController,但由于某些原因,这对我不起作用。
- (NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
您也可以对其余方法使用相同的方法。