5

複数のコントローラーを使用してビューを表示および制御するマルチビュー アプリケーションを作成しました。私が抱えている問題は、シミュレーターが最初にビューをロードするときに、ヘッダーが画面上部のバーで部分的に覆われ、ベースのツールバーが画面のベースに触れていないことです。インターフェイス ビルダーのサイズ属性を使用して、iPhone が回転するときのビューを制御し、完全に機能するようにしました。すべてのスマップは、回転後に横向きモードと縦向きモードの両方で完全に配置されますが、問題は回転が発生する前の初期ロードにあります。あなたの考えは大歓迎です。トニー

4

4 に答える 4

18

私は何日もこの問題に取り組みました.IBをいじってもうまくいきませんでした.

最終的に、次の行を追加することで機能するようになりました。

mainViewController.view.frame = window.screen.applicationFrame;

application:didFinishLaunchingWithOptions: メソッドに。(mainViewController はプライマリ UIViewController です)。

于 2010-05-23T23:35:32.027 に答える
1

私もこの問題に遭遇しました。具体的には、 を表示するADBannerViewと、ビュー全体が移動してステータス バーの下になり、iPhone 画面の下部にステータス バーのサイズだけの小さな空きスペースが残ります。これが私がそれを解決した方法です:(ここでのアダムの答えは私がこれを理解するのを助けました):

// In the function that displays an iAD Banner
CGRect contentFrame = self.view.bounds;
CGRect myStatusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
CGFloat statusHeight = myStatusBarFrame.size.height;

// Set the view's origin to be under the status bar.

contentFrame.origin.y = statusHeight;

ビューの原点をステータスバーの下に設定する必要があり、それで問題は解決しました。

于 2012-04-06T15:03:30.087 に答える
0

問題は、Apple docs によると、コントローラーを「間違って」追加していることです (ただし、Apple の設計は不適切ですが、デフォルトでは、シフトする必要はありません!)

ステータスバーを表示する場合、Appleすべてのコントローラーを「手動で」20 ピクセル下に移動することを要求しています (より正確には、ステータスバーの高さだけ - 現在は常に 20 ピクセルですが、Apple では高さを要求できます)。実行時に、UIApplication の「statusBarFrame」プロパティから)

Apple のクラス (UINavigationController / UITabBarController など) は、画面に追加されると、自動的に 20 ピクセル下に移動します。両方のクラスには、メイン コントローラーでなくてもこのシフトを行うというバグがあります。そのため、アプリは突然 20 ピクセル余分にシフトダウンし、上部に 20 ピクセルの余白が残ります。

しかし、それらがローテーションすると、それらのクラスはしばしば「うまくいき」、元の位置に戻ります。またはその逆。

何が起こっているかのより詳細な説明と、Apple が望んでいる方法でコードを記述する方法については、このリンクを参照してください。

http://blog.red-glasses.com/index.php/tutorials/iphone-auto-rotation-for-intermediate-developers-tutorial-1/

于 2011-01-31T18:57:27.810 に答える