UIScreen applicationFrame が横向きアプリケーションの起動時に間違った四角形を返す (iPhone/iPad) 質問する

UIScreen applicationFrame が横向きアプリケーションの起動時に間違った四角形を返す (iPhone/iPad) 質問する

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

おすすめ記事