新人奮闘記13
iOS入門
アプリ開発で画面が縦から横になったり、デバイスの向きにあわせて任意の方向に画面を固定したい場合等があると思います。
これまではあまり意識せず、縦画面のみ、もしくは、縦と横が対応したアプリを作成していました。
これからは意図的に画面の向きを制御できるように実装しいていきたいと思います。
General -> Deployment Info -> Device Orientationからチェックボックスで回転の可否を指定する事ができ デフォルトでは以下のように縦、横方向の画面回転が可能となっております。
各要素を図で示します。
Portrait Upside Down
LandScapeLeft LandScape Right
Portrait 縦画面 (通常)
Upside Down 縦画面 (逆さ)
Landscape Left (ホームボタン 左)
Landscape Right (ホームボタン 右)
しかし、最初の画面は縦のみ、次の画面では横も対応するものとして作成する時、上記の方法では、全ての画面がDevice Orientationで指定した項目の対象となってしまい、画面毎に回転の方向を設定する事ができない問題があります。
そこで今回は、画面Aでは縦のみ、画面Bでは縦と横にビューを表示できるものを作成してみたいと思います。
方法として、両画面ともデフォルトの設定で、画面Aのみ、縦表示で固定する手段で実装します。つまりこの場合画面Aのみの実装で良いことになります。
まず、最上位のビューコントローラー(画面A)にてUINavigationControllerを拡張し、画面の向きを返すsupportedIntafaceOrientationsメソッドをオーバーライドします。
SupportedInterfaceOritentationsをオーバーライドして最上位の画面(画面A)を対象に新たにSupportedInterfaceOritentationsをオーバーライドして、縦方向となるよう、意図的にPortraitを返す仕組みです。
[ViewController_A.swift]
実質的に24行目で画面Aのビューコントローラーは、Portraitのみとなります。
これで、画面Aは縦、画面Bは縦、横が対応となりました。
まとめ
・アプリ内全ての画面を同じように回転させる場合
General -> Deployment Info -> Device Orientation から設定
・個別に画面を固定したい場合は、UINavigationControllerを拡張し、supportedIntarfaceOrientationsメソッドを、対象のビューコントローラーにてオーバーライドする。
keny
admin at 2016年09月14日 08:17:09