iPad アプリケーションを横向きモードで起動するときに、正しい境界を取得できません。Info.plist ファイルに適切なキーが設定されており、ビュー コントローラーは横向き (もちろん縦向きも) で適切に起動します。
私のapplicationDidFinishLaunching:
メソッドでは、3 秒の遅延後にセレクターを呼び出しており、そのメソッドは を呼び出します[[UIScreen mainScreen] applicationFrame]
が、ポートレート フレーム (つまり、高さ > 幅) が返されます。
これを修正する方法を知っている人はいますか? 私にはバグのように思えます (そうであればレーダーを提出します)。しかし、これが意図された動作である場合、どこに文書化されていますか?
ベストアンサー1
特にアプリの起動中は、に頼ることはありません[[UIScreen mainScreen] applicationFrame]
。
コード内でビューを作成する場合は、スーパービューを使用してフレームを設定します。
「シミュレートされたインターフェース要素」で xib を使用している場合、サイズは正しく設定され、すべてが正常に動作します。
UINavigationControllerベースのアプリ
UINavigationController ベースのアプリの場合は、 から直接フレームを取得し、や をself.navigationController.view
使用しないでください。UINavigationController は「非表示」のサブビューを使用して機能するため、直接のスーパービューは機能しません。[self loadView]
self.view.superview
UINavigationController は、アプリの起動時にナビゲーション コントローラーが呼び出された後にビューのサイズを変更するという点で特別ですloadView
。自動サイズ変更が開始されると、画面の下部に小さな余白ができます。
UIScreenを使わない理由
[[UIScreen mainScreen] applicationFrame]
確実に動作しません (特に横向きでアプリを起動する場合)。私の経験では、ビューコントローラのinterfaceOrientation
プロパティは方向と一致しませんapplicationFrame
。