ポートレートモードで表示される UITabBarController があります。タブの 1 つに、UIViewController をモーダルに表示するボタンがあります (単純なストーリーボード セグエがアクションを実行します)。
このモーダル ビューをランドスケープ モードで表示したいのですが、自動的に回転させることができません。
私はこれをモーダルビューコントローラーに持っています
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
.plist でサポートされている方向に LandscapeLeft を追加しました (これにより、TabBar を回転させることもできますが、これは望ましくありません)。
これをモーダル ビューの ViewDidLoad にも追加しました
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft;
しかし、私はそれを自分で回転させることはできません。
ありがとう
編集 - -
shouldAutoRotate が呼び出されていないようです。
また、向きを検出しようとしていますが、以下のコードは向きに関係なく常に 2 を示しています!
if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait) {
NSLog(@"1");
self.hostView.frame = CGRectMake(0, 60, 200, 255);
} else {
NSLog(@"2");
self.hostView.frame = CGRectMake(0, 45, 480, 255);
}
編集2 ---
私の悪い。iOS 6 を使用していたことに言及する必要があったと思います。iOS 5 ではディスプレイが自動的に回転します。shouldAutorotateToInterfaceOrientation は廃止されたため、新しいメソッドを読む必要があります。