IOS6の新しいローテーション方法を使用する必要があることは知っていますが、私が作成した方法は機能しないようです。
plistファイルをすべての回転を許可するように設定しましたが、portraitUpsideDownは許可しません
その後、appDelegateに次のようになりました。
self.navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
[self.window setRootViewController:navController]; //add nav controller to be the root view
次に、rootViewで、別のコントローラーにプッシュするために、次のようにします。
WebViewViewController *webController = [[JBWebViewViewController alloc] init];
webController.urlString = urlName;
[self.navigationController pushViewController:webController animated:YES];
そして、Webコントローラーには次のものがあります。
#pragma mark - System Rotation Methods
//for any version before 6.0
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
//only allow landscape
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
/for 6.0+
- (BOOL)shouldAutorotate{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
私がやりたいのは、ルートビューで3回転を許可することですが、Webビューに切り替えるとき(サブビューを追加するのではなく、プッシュナビゲーションを行うことに注意してください)、ポートレートビューのみを許可したいと思います。
誰か助けてください
- - - -アップデート - - - - -
UINavigationControllerの独自のnavControllerサブクラスを作成しました。自動回転の仕様を通知するように設定できるBOOLlandscapeModeOnがあります。
#pragma mark - System Rotation Methods
//for any version before 6.0
- (BOOL)shouldAutorotateToInterfaceOrientation (UIInterfaceOrientation)interfaceOrientation
{
if (landscapeModeOn) {
return interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown;
} else {
return interfaceOrientation == UIInterfaceOrientationPortrait;
}
}
//for 6.0+
- (NSUInteger)supportedInterfaceOrientations{
if (landscapeModeOn) {
return UIInterfaceOrientationMaskAllButUpsideDown;
} else {
return UIInterfaceOrientationMaskPortrait;
}
}
- (BOOL)shouldAutorotate{
UIInterfaceOrientation ori = [UIDevice currentDevice].orientation;
if (landscapeModeOn) {
return ori != UIInterfaceOrientationPortraitUpsideDown;
} else {
return ori == UIInterfaceOrientationPortrait;
}
}
サブビューの読み込みでは、次のようにします。
- (void)viewWillAppear:(BOOL)animated{
//get nav controller and turn off landscape mode
JBNavController *navController = (JBNavController*)self.navigationController;
[navController setLandscapeModeOn:NO];
[navController shouldAutorotate];
}
--------------------ベストアンサーの見積もりを参照してくださいIOS6の場合、アップルは現在、ストーリーボードのAutoLayoutを新しい回転定義と一緒に使用することに焦点を当てています。一部を修正するのは困難です。 ios4.3およびios5のコーディング構造に基づくIOS6の小さなバグ
applefreakから、彼の提案は次のことを示唆しています。
あなたの場合の主な課題は、オリエンテーションを処理しないことです。実際には、さまざまなビューコントローラを特定の方向にロックしています
手動回転ビューはバグなしで行うのは本当に難しいようですが、それは私が今試している唯一の解決策のようですが、解決したらもっと投稿します