4

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

- (BOOL)shouldAutorotate {
    return NO;
}

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

1 回答 1

3

推送到同一个导航控制器的所有视图控制器必须支持相同的方向。具体来说,我相信只有根视图控制器shouldAutorotateToInterfaceOrientation会被考虑在内。您可以查看此 SO 帖子以获得一种解决方法;或在寻求一种可能有所帮助的不同方法。

我在上面链接的第二篇文章建议为您使用此定义,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];
}
于 2013-01-05T18:06:23.897 回答