我正在尝试设置UIViewController
的方向,并禁止UIViewController
上的所有方向更改。重要的是要注意应用程序允许所有方向,但在这一个视图控制器上我想只允许纵向方向。
我正在使用iOS 8,该应用适用于iOS 6及更高版本。所描述的行为发生在iOS 7和8中。我无法在iOS 6中测试它,因此我不确定它是否出现在iOS 6中。
我实施了以下方法:
- (BOOL)shouldAutorotate
{
return NO; // I've also tried returning YES - no success
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait; // I've also tried UIInterfaceOrientationPortrait - no success
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationMaskPortrait; // Never called
}
我已经能够设置以模态方式呈现的视图控制器的方向,但我没有为该项目以模态方式呈现视图控制器。甚至可以这样做吗?
如何指定一个UIViewController的方向,而不影响其他UIViewControllers的方向?甚至可以这样做吗?
答案 0 :(得分:1)
假设您的视图控制器嵌入在导航控制器中,您需要使用UINavigationController
的自定义子类并添加:
- (BOOL)shouldAutorotate;
{
BOOL shouldAutorotate;
if ([self.topViewController respondsToSelector:@selector(shouldAutorotate)])
{
shouldAutorotate = [self.topViewController shouldAutorotate];
}
else {
shouldAutorotate = [super shouldAutorotate];
}
return shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
NSUInteger supportedOrientations;
if ([[self topViewController] respondsToSelector:@selector(supportedInterfaceOrientations)]) {
supportedOrientations = [[self topViewController] supportedInterfaceOrientations];
}
else {
supportedOrientations = [super supportedInterfaceOrientations];
}
return supportedOrientations;
}
导航控制器中的。视图控制器中的方法很好,所以请保持原样。这适用于iOS 7-8(尚未在iOS6中测试)