これは本当に奇妙で、一体何が起こっているのかわかりません。
iPad アプリに UISplitViewController があります。縦向きから横向きに何度も回転でき、期待どおりに機能します。ただし、縦向きでボタンをタップしてUISplitViewControllerの左側を含むポップオーバーを表示し、表示中に回転すると、回転が完了すると左側のテーブルがプッシュされますとナビゲーション バーの間に黒い隙間を残します。
何が原因でしょうか?
-willRotateToInterfaceOrientation:duration
メソッドとメソッドをコメントアウトしました-didRotateFromInterfaceOrientation:
が、問題はまだ存在するため、ローテーション コードが原因ではありません。(そのコードは、そのポップオーバーを明示的に閉じていました)。
問題を引き起こす回転の後、フレームサイズとともに左側のビュー階層を再帰的に出力しました。
UILayoutContainerView ({{0, 0}, {320, 748}})
UINavigationBar ({{0, 0}, {320, 44}})
UILayoutContainerView ({{0, 37}, {320, 711}})
UINavigationTransitionView ({{0, 0}, {320, 711}})
UIViewControllerWrapperView ({{0, 44}, {320, 667}})
UIView ({{0, 0}, {320, 667}})
UITableView ({{0, 0}, {320, 667}})
ナビゲーションバーの高さは 44 ピクセルで、左側のビュー コントローラーを保持するビュー コンテナーは 0,44 から始まり、テーブルビューは 0,0 から始まりますが、それよりも短いことがわかります...なぜそれが正しく表示されません。
横向きの場合は次のようになります。左側に、テーブル セクション ヘッダー「What do you want to know?」が表示されます。「電卓に切り替える」ボタンのあるナビゲーションバーのすぐ下にあります。
縦向きに切り替えて、「何を知りたいですか?」をタップすると、ボタンをクリックすると、左側のナビゲーション コントローラーと UITableViewController を含むポップオーバーが表示されます。
ここで、回転して横向きに戻すと、ナビゲーション バーと UITableView の間に黒い隙間が表示されます。