2

6 より前のバージョンの iOS でうまく機能する iPad アプリがあります。

私のルートView Controllerはリストを表示し、リスト内の任意のアイテムをクリックすると、ルートView ControllerはモーダルView Controllerを提示してアイテムの詳細を表示します。

問題は、ルート ビュー コントローラーのレイアウトが横向きと縦向きで異なることです。モーダル ビュー コントローラーが存在しない場合、向きが変わってもレイアウトはまったく問題なく更新されますが、モーダル ビュー コントローラーで覆われている場合は更新されません。更新、これは iOS 6 でのみ発生します。そのため、アイテムをクリックすると、画面全体を覆うモーダル ビュー コントローラーが表示され、デバイスを回転させてからモーダル ビュー コントローラーを閉じても、ルート ビュー コントローラーはそのままです。古い向きのレイアウトで、これは本当に面倒です。

iOS 6 では shouldAutorotateToInterfaceOrientation が廃止され、フルスクリーン モーダル ビュー コントローラーでカバーされているビュー コントローラーは、iOS 6 以前のように回転イベントを受信しないという変更をよく認識しています。このスレッドで提案されていることを行いました: iOS 6 回転の問題 - モーダル ビュー コントローラーからその背後のビュー コントローラーに回転イベントを手動で渡す Presented Modal View Controller からの回転はありませんが、その背後のビュー コントローラーはまだそのレイアウトを更新しません。解決策はありますか?

4

1 に答える 1

5

すべての回転ロジックをに移動しますviewDidLayoutSubviews。とてもシンプルで、以前と同じ機能が得られます。何が起こるかというと、モーダルビューコントローラを閉じた後、表示されているビューはレイアウトになり、現在の方向に適切なレイアウトに切り替えることができます。

于 2012-11-10T20:17:33.740 に答える