4

私はあらゆる種類の向きをサポートするアプリを持っていますが、特定のviewControllerが横向きのみをサポートし、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投稿を参照してください。または、この1つで、役立つ可能性のある別のアプローチを使用します。

上でリンクした2番目の投稿は、この定義を使用し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 に答える