Trait
概要
Trait とは、アプリケーションが実行されている環境を説明するもの。 Traits describe the environment that your application is running in.
例えば、Trait の例として horizontalSizeClass がある。これは、水平方向の利用可能な空間に対してどのような体験を提供すべきか、を説明する Trait であり、Regular, Compact, Unspecified の3つのうちどれかの値をとる。Trait 自体は具体的な値に紐づかないのが特徴。 Layout に関する Trait
Dynamic Type (フォントサイズ)
Layout Direction (右->左 or 左->右)
Appearance に関する Trait
Display Gamut (色域)
Interface Style (light/Dark, Apple TV のみ)
Capabilities に関する Trait
3D Touch (サポートの有無)
https://gyazo.com/a5c12717e95dc5c9c23cd46de90c09ba
インタフェース環境の変更に応じたアニメーションをカスタマイズしたい場合は UIContentContainer プロトコルの willTransition(to:with:) をオーバーライドする。
table:UITraitCollection
プロパティ名 値の型 概要
horizontalSizeClass UIUserInterfaceSizeClass 水平方向の Size Class
verticalSizeClass UIUserInterfaceSizeClass 垂直方向の Size Class
displayScale CGFloat 表示スケール。1.0 は non-Retina, 2.0 は Retina ディスプレイを示す
userInterfaceIdiom UIUserInterfaceIdiom
traitColleciotnDidChange(_:) 内で全ての変更をハンドリングするのは大変なので、自動的に応答するシステムがいくつかある。
AppleTVの明暗モード用に異なる配色を設定すると、traitCollectionDidChange 時に自動で適用される
参考