質問: やりたいことは「ある1つのViewController(以下VC)はlandscape固定、それ以外のViewController(以下VC)達はportrait固定にする」ということをしたいです。 行ったことは、 1. xcode全体の設定として、portlaitおよびlandscapeを許可する。 2. portrait固定のVC達には**supportedInterfaceOrientationsでportrait**を返すようにする。 3. landscape固定のVCには**supportedInterfaceOrientationsでlandscape**を返すようにする。 ということを行いました。 問題は portrait固定のあるVCからlandscape固定のVCに遷移すると、遷移元のportrait固定のVCのcollectionViewのセルサイズが再計算されてしまい、Viewが崩れてしまうという問題です。 そもそも遷移元のcollectionViewの再計算ロジックが実行されるのは意図しない動作です。 参考までに 1. この問題の発生する遷移元のVCはNavigationViewControllerの子ViewControllerです。 2. またそのNavigationViewControllerのrootViewControllerとして指定したVCからlandscape固定のVCしても、rootViewControllerとして指定した遷移元のVCのcollectionViewの再計算ロジックが実行されることはなく、Viewが意図しない表示になることはないため、landscape固定のVC自体に問題があるとも考えておりません。 iOSのオリエンテーション対応は非常にトリッキーです。 一応世にネットに出回っている情報は一通り目を通したつもりです。 よろしくお願い致します!
回答: VC内に置けるcollectionViewの配置の仕方が問題であった。 UIViewをTOPとして、その子ViewとしてcollectionVIewを配置しないと上記の問題が発生する。 今回VCのTOPとしてcollectionViewを配置した理由はこのVCにはcollectionViewしか存在しないので、親にUIViewを挟むのはViewの無駄遣いかと思い、いきなりcollectionViewを設置してしまっていたのが原因であった。 よってオリエンテーションの設定の仕方とは無関係だということが分かった。