ハマりかけたので備忘録としてまとめ。
Xcode でアプリを開発しているアプリを iPad で起動した際、どうやっても画面が横になったまま固定されてしまうのを解消する方法についてです。
参考にさせていただいた記事はこちらから。
iPadアプリでなぜか画面が回転してしまう不具合 – 酢ろぐ!
https://blog.ch3cooh.jp/entry/ios/rotate_screen_on_ipad
最初、TARGET > General の Deployment Info にある、Device Orientation から、Landscape Left と Landscape Right のチェックを外せばいいだけだと思っていたのですが…こちらのチェックを外しても、画面の横固定が解除できませんでした。

スクリーンショットはこちら。
画像中央にある、Device Orientation の項目がそうです。
では、コードで何か指定をしているのか!?と思い、該当する ViewController や AppDelegate.m のコードも確認してみたのですが、それらしい記述をコメントアウトしたり修正してみても変化なしでした…。
なので、再び有益な情報はないかと調べたところ、上記の参考サイトに遭遇しました。
こちらの記事によると、Info.plist をテキストエディターで開き、内容を確認するといいとのこと。
で、実際に開いてみたところ、iPad の画面向きを指定している項目である UISupportedInterfaceOrientations~ipad に、しっかりと UIInterfaceOrientationLandscapeLeft と UIInterfaceOrientationLandscapeRight が記載されてしまっていました…!
なのでこちらを削除し、UIInterfaceOrientationPortrait だけを追加しました。
該当のコードはこちら。
<!-- iPhone の画面向きの設定 -->
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<!-- iPad の画面向きの設定 -->
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
9行目からの <array> タグ内に、指定したい設定のみを追加します。
今回は画面の縦向きのみを有効にしたかったので のみを残して、それ以外は削除しました。
なお、今回とは逆に、画面の横向きのみを許可したい場合は、 と を追加し、それ以外は削除します。
その後、実機で確認したところ、先ほどまでの格闘がなんだったのかと思うくらいあっさりと画面が縦向きになりました!
どうやら、Xcode 上で Device Orientation 設定する時、iPhone と iPad の両方にチェックが入っていた場合、表示される設定値は iPhone のものになるみたいです。
試しに、iPhone のチェックを外したところ、確かに iPad の設定が表示されました。
なので、どうしても Xcode 上で画面向きを設定したい場合は、一時的に iPhone のチェックを外し、画面向きのチェックを正しく設定したあと、再度 iPhone にチェックを入れれば問題ないはずです。
個人的には、Info.plist を確認した方が確実なので、こちらの方法の方がおすすめですね。
以上、Xcode でアプリ画面が横固定になるのを解除する方法でした。
ご参考になれば幸いです。