锁定ViewController的方向

时间:2013-01-05 17:33:31

标签: iphone objective-c ios cocoa-touch

我有支持各种方向的应用程序,但是我希望某些viewControllers只支持横向,而很少用来锁定Potrait模式。 我怎么能这样做,我尝试了下面的代码,但没有任何作用。

- (BOOL)shouldAutorotate {
    return NO;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}
// pre-iOS 6 support
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}

1 个答案:

答案 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];
}