我有支持各种方向的应用程序,但是我希望某些viewControllers只支持横向,而很少用来锁定Potrait模式。 我怎么能这样做,我尝试了下面的代码,但没有任何作用。
- (BOOL)shouldAutorotate {
return NO;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
// pre-iOS 6 support
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}
答案 0 :(得分:3)
推入同一导航控制器的所有视图控制器必须支持相同的方向。具体来说,我认为只考虑了根视图控制器shouldAutorotateToInterfaceOrientation
。您可以查看this S.O. post的某种解决方法;或者在this one寻找可能有所帮助的不同方法。
我上面链接的第二篇帖子建议使用shouldAutorotateToInterfaceOrientation
的这个定义,你可能会根据你的情况进行调整:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if ([self.selectedViewController isKindOfClass:[UINavigationController class]]) {
UIViewController *rootController = [((UINavigationController *)self.selectedViewController).viewControllers objectAtIndex:0];
return [rootController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}
return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}