1

glesアプリを作成し、iPadでテストしました。ランドスケープモードでのみ動作するはずなので、Info.plistこんな感じです

<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
    <string>UIInterfaceOrientationLandscapeLeft</string>
    <string>UIInterfaceOrientationLandscapeRight</string>
</array>

スプラッシュ画面が正しく表示されるように、iPhoneに対してのみ横向きの右を設定しました(iPhoneでは横向きの右と横向きの左に別々のスプラッシュ画面を設定できないようです)

アプリケーションは正常に動作しますが、友人のiPhoneでは、アプリは縦向きモードで動作し、どちらの横向きにも回転しません。回転ロックがオフになっています。

Info.plistiPadで完全に機能するように設定するだけなので、ローテーションをサポートするためにコードから特に何もしていません。

iPhoneシミュレーターは自動的に横向きになり、回転しても横向きのレンダリングが保持されます。

これを引き起こしている可能性がありますか?また、両方の横向きの回転を許可しようとしましたが、サイコロは許可しませんでした。

4

1 に答える 1

3

ios6は、向きの変更に対処するための新しい方法を導入しました-あなたの友人のiPhoneはios5を実行していると思います。両方のバージョンを処理する方法については、UIViewControllerのドキュメントを参照してください。

ビューの回転の処理

iOS 6では、アプリはアプリのInfo.plistファイルで定義されたインターフェースの向きをサポートします。ビューコントローラは、supportedInterfaceOrientationsメソッドをオーバーライドして、サポートされている方向のリストを制限できます。通常、システムはこのメソッドをウィンドウのルートビューコントローラーまたは画面全体に表示されるビューコントローラーでのみ呼び出します。子ViewControllerは、親View Controllerによって提供されたウィンドウの一部を使用し、サポートされている回転に関する決定に直接関与しなくなりました。アプリの方向マスクとビューコントローラーの方向マスクの交点を使用して、ビューコントローラーを回転できる方向を決定します。

特定の方向で全画面表示されることを目的としたViewControllerのpreferredInterfaceOrientationForPresentationをオーバーライドできます。

iOS 5以前では、UIViewControllerクラスはビューをポートレートモードでのみ表示します。追加の方向をサポートするには、shouldAutorotateToInterfaceOrientation:メソッドをオーバーライドし、サブクラスがサポートするすべての方向に対してYESを返す必要があります。ビューの自動サイズ変更プロパティが正しく構成されている場合は、それだけで済みます。ただし、UIViewControllerクラスは、必要に応じて追加の動作を実装するための追加のフックを提供します。一般に、View Controllerを子ViewControllerとして使用する場合は、すべてのインターフェイスの向きをサポートする必要があります。

表示されているビューコントローラで回転が発生すると、回転中にwillRotateToInterfaceOrientation:duration:、willAnimateRotationToInterfaceOrientation:duration:、およびdidRotateFromInterfaceOrientation:メソッドが呼び出されます。viewWillLayoutSubviewsメソッドは、ビューのサイズが変更され、親によって配置された後にも呼び出されます。向きの変更が発生したときにViewControllerが表示されない場合、rotationメソッドが呼び出されることはありません。ただし、ビューが表示されると、viewWillLayoutSubviewsメソッドが呼び出されます。このメソッドの実装では、statusBarOrientationメソッドを呼び出して、デバイスの向きを判別できます。

于 2013-02-08T19:09:51.663 に答える