こんにちは、JAGA(ja_gaimopotato)です。
アプリを回転に対応すべく色々と調整しています。
基本的にはStoryboardで作るほうが楽なことが結構あって、コードでViewを追加していたところを作り直すなどの作業が多いです。
しかしながら、shouldAutorotateが呼ばれない問題が発生しました。
詳しく検証してみるとRootViewControllerがコンテナViewControllerとなっている時には子ViewControllerのshouldAutorotateが呼ばれないことに気が付きました。
これはどうやら、コンテナViewControllerの回転の制御が子ViewControllerにも適用されるからなのでしょう。
他のアプリでは大丈夫なコードが、動かないので本当に困っていました。
そういった情報をもろもろ調べていると下記サイトの情報がとてもわかり易く理解が深まりました。
この場合はUINavigationViewControllerのサブクラスかカテゴリでshouldAutorotate
とsupportedInterfaceOrientations
とpreferredInterfaceOrientationForPresentation
を設定して子ViewControllerの各種メソッドを呼び出せばよいとのこと。
どうやら、shouldAutorotateが呼ばれないのは仕様らしく注意する必要があります。
カテゴリを作って、子ViewControllerで読み込んでおけば簡単に動作するようになりました。