デバイスの向きに依存しないアプリ開発
- 2018年5月31日
- iOS
現在iOSアプリ開発では、様々なデバイスのサイズに対応する必要があるだけでなく、デバイスの向きに依存しない開発が求められています。
Xcode7 (iOS9)以降から以下のようにワーニングも表示されるようになっています。

All interface orientations must be supported unless the app requires full screen.
上記、フルスクリーン画面を必要としない限りは、全ての向きに対応しなければならないとの警告になり、これはUINavigationControllerやUITabbarControllerなどの一般的な画面コンテナクラスを使用してしまうだけで、この警告に当てはまってしまうことになります。
ただアプリ開発段階で、縦向き専用(もしくは横向き専用)のアプリかどうかを設定する事ができます。
しかしながら、そういう設定をしてしまいますと横向きの画面を表示することができなくなってしまいます。

General → Development Info にデバイスがサポートする向きを設定することができる
なので現在iOSアプリ開発では、画面のサイズだけではなく、画面の向きに依存した開発は極力行わないのが一般的です。
iOSアプリ開発では、画面の向きに依存しない開発が行えるように以下の機能が提供されています
* Auto Layout
* UITraitEnvironmentプロトコル
特にUITraitEnvironmentプロトコルは、UIに関わるクラス全てが適合しており、画面の向きの変更に素早く対応することが出来ます。
以下にその機能の紹介がされておりますので、ご紹介させていただきます。
(WWDCのビデオですのでsafariでしか見ることが出来ません)
Building Adaptive Apps with UIKit
まとめ
iOSのデバイスも多種多様なサイズが登場し、画面サイズに依存しない開発は、もはや一般的ですが、向きに関しては少し遅れ気味です。これは開発者が独断で決めることが出来ず、デザイナーさんや企画者さんなど様々な人にお願いする必要があるからだろうとも考えられます。
そのためには、iOSアプリのバージョンが上がる度に、開発がこのように変わりますといったエンジニアからの発信が極めて重要であると言えます。
そうすることによって開発がスムーズに進めることが出来ます。
木曜日担当
yoshimoto
yoshimoto at 2018年05月31日 12:23:18