私は99%の肖像画のみのアプリを持っています。ただ1つのビューコントローラがランドスケープにあります。したがって、私のInfo.plist
には、3つの可能な方向が含まれています:ポートレートと両方の風景。iOS:バックグラウンドでアプリの後に状態バーとキーボードが回転する
アプリをバックグラウンドで前面に戻すと、デバイスを回転するとステータスバー(およびキーボードが表示されている場合はキーボード)が横に回転します。私の見解は正しいままです。
これはバグですか、何か不足していますか?
私は99%の肖像画のみのアプリを持っています。ただ1つのビューコントローラがランドスケープにあります。したがって、私のInfo.plist
には、3つの可能な方向が含まれています:ポートレートと両方の風景。iOS:バックグラウンドでアプリの後に状態バーとキーボードが回転する
アプリをバックグラウンドで前面に戻すと、デバイスを回転するとステータスバー(およびキーボードが表示されている場合はキーボード)が横に回転します。私の見解は正しいままです。
これはバグですか、何か不足していますか?
application:supportedInterfaceOrientationsForWindow:
をあなたのApp Delegateに実装することができます。アップルのドキュメントから
:
このメソッドは、アプリでサポートされているインターフェイスの向きの合計セットを返します。特定のビューコントローラを回転するかどうかを決定するとき、このメソッドによって返される方向は、ルートビューコントローラまたは最上位の提示されたビューコントローラによってサポートされる向きと交差される。アプリケーションとビューコントローラは、ローテーションが許可される前に合意する必要があります。 このメソッドを実装しない場合、アプリケーションはデフォルトのインターフェイスの向きとして、アプリのInfo.plistのUIInterfaceOrientationキーの値を使用します。
あなたは、このような何か(あなただけ-1-風景コントローラがMyLandscapeOnlyViewControllerであると仮定)を追加することができます
のObjective-Cを
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { // Return the desired orientation for your custom-oriented ViewController if ([window.rootViewController.presentedViewController isKindOfClass:[MyLandscapeOnlyViewController class]]) { return UIInterfaceOrientationMaskLandscape; } // Default orientation is portrait return UIInterfaceOrientationMaskPortrait; }
スウィフト3
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { // Return the desired orientation for your custom-oriented ViewController if (window?.rootViewController?.presentedViewController?.isKind(of: MyLandscapeOnlyViewController.self) == true) { return .landscape } // Default orientation is portrait return .portrait }
検査表示されるViewControllerのうち、最も上に表示されているViewControllerのほうが、ビュー階層によっては難しいかもしれませんが、これは一般的な考え方です。
希望すると便利です。
これは私のアプリのために完璧に機能しました。 –
私はまったく同じ問題を抱えています。私はこれについて非常に不満です。私のアプリはXIBのみを使用し(ストーリーボードなし)、Yoursのように1つの画面を除くすべての画面で縦向きになっています。 –