2

私は新しいiOS6の自動回転に関するほとんどすべての答えを読みましたが、それでも私が望むことを何とかすることができません。

tabBarがあります。タブの1つはNavigationViewです。iPhoneを横向きにすると、modalViewControllerが読み込まれます。

iOS5ではすべて問題なく動作しますが、iOS6ではモーダルビューを回転させることができません。ナビゲーションコントローラーのサブクラス化、タブバーコントローラーのサブクラス化、およびその両方を試しました。とんでもない。

私は今とても混乱しています。どちらがモーダルビューの回転を担当しますか?tabbarController?、navigationViewController?、それを提示したviewController?。

助けていただければ幸いです。

ありがとう

4

2 に答える 2

2

iOS6では、アプリケーションの回転を変更する必要があります。application.statusBarOrientation = UIInterfaceOrientationLandscapeLeft;

于 2012-11-17T21:05:41.513 に答える
0

自動回転はiOS6で変更されています。iOS6 では、UIViewControllerのshouldAutorotateToInterfaceOrientation メソッドは非推奨になりました。代わりに、 supportedInterfaceOrientationsForWindowメソッドとshouldAutorotateメソッドを使用する必要があります。

より多くの責任は、アプリとアプリデリゲートに移動することです。現在、iOSコンテナ(UINavigationControllerなど)は、自動回転する必要があるかどうかを判断するために子に相談しません。デフォルトでは、アプリとビューコントローラーでサポートされているインターフェイスの向きは、iPadイディオムの場合はUIInterfaceOrientationMaskAllに、iPhoneイディオムの場合はUIInterfaceOrientationMaskAllButUpsideDownに設定されています。

ビューコントローラでサポートされているインターフェイスの向きは時間の経過とともに変化する可能性があります。アプリでサポートされているインターフェイスの向きでさえ、時間の経過とともに変化する可能性があります。システムは、デバイスが回転するとき、またはビューコントローラがフルスクリーンのモーダルプレゼンテーションスタイルで表示されるときはいつでも、サポートされているインターフェイスの向きを最上位のフルスクリーンビューコントローラ(通常はルートビューコントローラ)に要求します。さらに、サポートされている方向は、このViewControllerがshouldAutorotate メソッドYESから戻った場合にのみ取得されます。システムは、View Controllerでサポートされている方向と、アプリでサポートされている方向(ファイルまたはアプリデリゲートのapplication:supportedInterfaceOrientationsForWindow:メソッドによって決定される)を交差させて、回転するかどうかを決定します。Info.plist

システムは、アプリのsupportedInterfaceOrientationsForWindow:メソッドによって返される値を、最上位のフルスクリーンコントローラーのsupportedInterfaceOrientationsメソッドによって返される値と交差させることによって、方向がサポートされているかどうかを判断します。

setStatusBarOrientation :animated:メソッドは完全に非推奨ではありません。最上位のフルスクリーンビューコントローラのsupportedInterfaceOrientationsメソッドがを返す場合にのみ機能するようになりました0。これにより、発信者はステータスバーの向きが一貫していることを確認する責任があります。

互換性のために、shouldAutorotateToInterfaceOrientation:メソッドをまだ実装しているビューコントローラは、新しい自動回転動作を取得しません。(つまり、サポートされている方向を決定するためにアプリ、アプリデリゲート、またはInfo.plistファイルを使用することにフォールバックしません。)代わりに、shouldAutorotateToInterfaceOrientation:メソッドを使用して、supportedInterfaceOrientationsメソッドによって返される情報を合成します。

willRotateToInterfaceOrientation :duration:willAnimateRotationToInterfaceOrientation:duration:didRotateFromInterfaceOrientation:メソッドは、それ自体でフルスクリーンプレゼンテーションを行うビューコントローラー(たとえば、 presentViewController:animated:completion:)では呼び出されなくなりました。

アプリがサブビューのレイアウトを管理するためにこれらのメソッドを使用していないことを確認する必要があります。代わりに、ビューコントローラのviewWillLayoutSubviewsメソッドを使用し、ビューの境界矩形を使用してレイアウトを調整する必要があります。

リファレンス-iOS6.0リリースノート

これがあなたを助けるかもしれないことを願っています

于 2012-11-17T14:56:11.337 に答える