25
iOS 8でビューコントローラーの向きを強制する方法
iOS 8より前は、supportedInterfaceOrientationsおよびshouldAutoRotateデリゲートメソッドと組み合わせて以下のコードを使用して、アプリの向きを特定の向きに強制しました。以下のコードスニペットを使用して、プログラムでアプリを目的の向きに回転させました。まず、ステータスバーの向きを変更します。そして、モーダルビューを表示してすぐに閉じると、ビューが目的の方向に回転します。 [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES]; UIViewController *c = [[UIViewController alloc]init]; [self presentViewController:vc animated:NO completion:nil]; [self dismissViewControllerAnimated:NO completion:nil]; しかし、これはiOS 8では失敗しています。また、スタックオーバーフローでいくつかの回答を見てきましたが、iOS 8以降はこのアプローチを常に避けるべきであると人々から提案されました。 具体的には、私のアプリケーションはユニバーサルタイプのアプリケーションです。合計3つのコントローラーがあります。 First Viewコントローラ -iPadではすべての方向をサポートし、iPhoneではポートレート(ホームボタンを押した状態)のみをサポートする必要があります。 セカンドビューコントローラー -すべての状況でランドスケープのみをサポートします サードビューコントローラー -すべての状況でランドスケープのみをサポートする必要があります ページナビゲーションにはナビゲーションコントローラを使用しています。最初のビューコントローラーから、ボタンクリックアクションで、2番目のアクションをスタックにプッシュします。そのため、デバイスの向きに関係なく、2番目のビューコントローラーが到着すると、アプリは横向きにのみロックする必要があります。 以下は、2番目と3番目のビューコントローラーのmy メソッドshouldAutorotateとsupportedInterfaceOrientationsメソッドです。 -(NSUInteger)supportedInterfaceOrientations{ return UIInterfaceOrientationMaskLandscapeRight; } -(BOOL)shouldAutorotate { return NO; } これの解決策、またはiOS 8の特定の方向でビューコントローラをロックするより良い方法はありますか?助けてください!!