4

横長の iPad アプリで非常に奇妙なレイアウトのバグが発生しています。

アプリケーションは、横向きで起動すると完全に起動して実行されます。ただし、landscape-left で開始すると、メイン ビューの上部に 20px のマージンが追加されます。

このアプリのデザインには、上部にタイトル バーがあり、下部にナビゲーション バーがあります (どちらも、いくつかの UILabels/UIButton を持つ単なる UIView です)。バグのある横向き左モードでアプリを起動し、横向き右に切り替えると、上部と下部のバーが本来あるべき位置より 20 ピクセルに移動します。つまり、上部のバーはステータス バーの下に配置され、ボトムバーは、フレームの下部から 20 ピクセル上に浮いています。

本当にとても奇妙です。私が言ったように、横向きで開くと完全に機能します。

誰でも何か考えがありますか?このバグを見ましたか?

iOS SDK 6.1 と Xcode 4.6 を使用しています

編集 [詳細]

私が追加したいくつかのログからのいくつかの可能な手がかり – メイン ビューには (0,0,1024,748) のフレームがあり、[[UIScreen mainScreen] applicationFrame] への呼び出しは (20,0,748,1024) のフレームを返します。は肖像画です。確かに興味深いですが、必ずしも起動状態間の不一致を説明しているわけではありません。ログはエラー状態と機能モード間で同一です。

編集 [プロットが太くなる]

すべてのビュー フレームをチェックしたところ、再現可能なエラーが発生しました。

アプリ内にフルスクリーンの「スライドショー」モードがあり、ステータスバーが非表示になります。このフルスクリーン モードでアプリケーションを回転させると、20 ピクセルのギャップ エラーを回転させることができます。

したがって、プロセスは次のとおりです。

- アプリは正常に動作し、正常に回転します - フルスクリーン ショーに入り、正常に表示されます - フルスクリーンで回転し、レイアウトが 20px シフトします - スライドショーを閉じます。レイアウトはシフトしたままです - 最初の回転で、レイアウトは通常に戻ります

そこにたどり着く...ここで呼び出す必要がある setWantsFullScreenLayout に似たものはありますか?

4

1 に答える 1

0

20 ピクセルはステータス バーの高さです。回転に対する 20 ピクセルのオフセットは、ほとんどの場合、(ルート) ビュー コントローラーのフレームと関係があります。ルート ビュー コントローラーのビュー フレームに0,0原点を設定してみてください。

于 2013-03-02T04:51:33.753 に答える