iOS 6の自動回転がおかしな動作をする 質問する

iOS 6の自動回転がおかしな動作をする 質問する

ビデオを再生し、他のタブUITabBarControllerに他の情報を表示するアプリがあります。iOS 6 では回転メソッドが廃止されたため、現在はとメソッドを使用する必要があります。ビデオの再生には を使用します。UITabBarUIViewshouldAutoRotatesupportedInterfaceOrientationsMPMoviePlayerViewController

このプレーヤー ビューだけを回転させるにはどうすればよいでしょうか。アプリ全体を回転させることしかできませんが、これはしたくありません。提示しましたMPMoviePlayerViewControllerが、iOS 5 以前と同じようには回転しません。

設定では、plist縦向きのインターフェースの向きを 1 つだけ設定しました。他の向きに設定すると、アプリ全体が回転します。

ベストアンサー1

Apple の iOS 6 SDK リリースノートより:

iOS 6 では、自動回転が変わります。iOS 6 では、UIViewController の shouldAutorotateToInterfaceOrientation: メソッドは非推奨です。代わりに、supportedInterfaceOrientationsForWindow: メソッドと shouldAutorotate メソッドを使用する必要があります。

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

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

システムは、アプリのsupportedInterfaceOrientationsForWindow: メソッドによって返される値と、最上位の全画面コントローラのsupportedInterfaceOrientations メソッドによって返される値とを交差させることによって、方向がサポートされているかどうかを判断します。setStatusBarOrientation:animated: メソッドは完全に非推奨になったわけではありません。現在は、最上位の全画面ビューコントローラのsupportedInterfaceOrientations メソッドが 0 を返す場合にのみ機能します。これにより、呼び出し元はステータス バーの方向が一貫していることを確認する責任を負います。

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

アプリ全体を回転させる場合は、Info.plist をすべての方向をサポートするように設定する必要があります。特定のビューを縦向きのみにしたい場合は、何らかのサブクラスを作成し、自動回転メソッドをオーバーライドして縦向きのみを返すようにする必要があります。ここに例を示します。

https://stackoverflow.com/a/12522119/1575017

おすすめ記事