私はこれに何日も取り組んできましたが、クラックできません。イベントのシーケンスは次のとおりです。
- ランドスケープ (正しいとしましょう) では、ユーザーは「編集」ボタンを押します。
- 縦向きのみのモーダル インターフェイスがスライドインします。その shouldAutorotateToInterfaceOrientation は、縦向きの場合のみ yes を返します。
- デバイスは、ポートレート モードであると確信します。
- 問題 1: ユーザーが実際に縦向きモードに回転せずにインターフェースを閉じた場合、デバイスは横向きであると報告しますが (実際はそうです)、インターフェースは縦向きに配置されます。
- 問題 2: ユーザーが縦向きに回転すると、インターフェイスが再びレイアウトされません。
- 問題 3: (そして、これは奇妙です) 編集ボタンが押された場所と同じ横方向 (右) に回転して戻すと、ステータス バーが横方向に戻りますが、それ以外は何も変わりません。私のすべてのものは、縦向きモードでレイアウトされたままです。もう一方 (左) の横向きに回転すると、完璧に機能します。
デバイスが実際にある向きのレイアウトをレイアウト エンジンに強制的にやり直す方法が必要です。
UIView - layoutSubviews、 - setNeedsLayout、および -layoutIfNeeded には効果がありません。
助けてくれてありがとう。