IOS6では、shouldAutorotateToInterfaceOrientation
は非推奨になりました。 supportedInterfaceOrientations
とshouldAutorotate
を使用してアプリを自動回転で正しく動作させようとしましたが、失敗しました。
このViewController回転したくないのですが、機能しません。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
-(BOOL)shouldAutorotate
{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
何か案は?事前に助けてくれてありがとう!
理解した。
1)サブクラス化されたUINavigationController(階層の最上位のviewcontrollerが方向を制御します。)それをself.window.rootViewControllerとして設定しました。
- (BOOL)shouldAutorotate
{
return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
return self.topViewController.supportedInterfaceOrientations;
}
2)ビューコントローラを回転させたくない場合
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
-(BOOL)shouldAutorotate
{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
)回転できるようにしたい場合
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
-(BOOL)shouldAutorotate
{
return YES;
}
ところで、あなたのニーズに応じて、別の関連する方法:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait;
}
ルートコントローラーとしてナビゲーションコントローラーの代わりにタブバーコントローラーを使用している場合は、同様にUITabBarControllerをサブクラス化する必要があります。
また、構文も異なります。以下を使用して成功しました。次に、上記の例を使用して、オーバーライドしたいビューコントローラーで成功しました。私の場合、メイン画面を回転させたくありませんでしたが、FAQ画面には、自然に横向きのビューを有効にしたいと思っていました。完全に機能しました。構文がself.modalViewController(ナビゲーションコントローラーの構文を使用しようとすると、コンパイラーの警告が表示されます。)これがお役に立てば幸いです。
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (BOOL)shouldAutorotate
{
return self.modalViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
return self.modalViewController.supportedInterfaceOrientations;
}