我在常规目标设置下为我的应用启用了横向方向:
这一切都运转良好 - 该应用程序可用于所有选定的方向......
现在我想在仅一个视图上停用横向模式。
我在特定的视图控制器上尝试了以下操作:
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
不幸的是没有成功......
修改:
我的应用程序的结构是:
UITabBarController
UINavigationController
UITableViewController
UIViewController
答案 0 :(得分:1)
您是否将上面的代码放在View或ViewController的ViewController中?您需要将其放在导航控制器中,否则导航控制器将旋转,导致视图也旋转。子类UINavigationController并覆盖shouldAutoRotate:
- (BOOL)shouldAutorotate
{
id currentViewController = self.topViewController;
if ([currentViewController isKindOfClass:[ViewController class]])
return NO;
return YES;
}
因此,只有当显示的视图是您不想旋转的视图时,导航控制器才会旋转。
修改强>
UITabBarController内部:
- (BOOL)shouldAutorotate
{
if([self.selectedViewController isKindOfClass:[UINavigationController class]]){
UINavigationController *navigationController = (UINavigationController *) self.selectedViewController;
id currentViewController = navigationController.topViewController;
if ([currentViewController isKindOfClass:[ViewController class]])
return NO;
}
}
return YES;
}