UITraitEnvironment
継承:なし
フレームワーク:iOS 8.0 以降の UIKit。
宣言:UITraitCollection.h
水平および垂直方向のサイズクラス、表示スケール、およびユーザー・インターフェース・イディオムのような形質を含む iOS のインターフェース環境は、UITraitEnvironment プロトコル経由でアプリに利用可能です。以下のインターフェイスクラスは、このプロトコルを採用しています: UIScreen、UIWindow、UIViewController、UIPresentationController、と UIView。
このプロトコルを採用しているオブジェクトの形質の環境にアクセスするには、traitCollection プロパティを使用して下さい。プロトコルはまた、システムがインタフェース環境が変化した時呼び出すオーバーライド可能なメソッドを提供します。適応する iOS アプリ作成の一環として、このメソッドを実装します。
形質コレクションの詳細については、UITraitCollection クラスリファレンス を参照してください。iOS の適応インタフェースの作成に関する WWDC2014 のプレゼンテーションについては、UIKit で適応するアプリをビルド(Building Adaptive Apps with UIKit) を参照してください。
タスク
形質コレクションへのアクセス
traitCollection 必須プロパティ
ビューコントローラの形質コレクション (UIViewController クラスまたはそのサブクラスのインスタンス) またはビュー (UIView クラスまたはそのサブクラスのインスタンス)。(読み取り専用)
宣言
<< SWIFT >>
var traitCollection: UITraitCollection { get }
<< OBJECTIVE-C >>
@property(nonatomic, readonly, nonnull) UITraitCollection *traitCollection
議論
UITraitEnvironment プロトコルは、ビューコントローラとビューによって採用されています。
利用可能
iOS 8.0 以降で利用可能。
インターフェイス環境の変化への対応
- traitCollectionDidChange: 必須
iOS のインターフェイス環境が変化したときに呼び出されます。
宣言
<< SWIFT >>
func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?)
<< OBJECTIVE-C >>
- (void)traitCollectionDidChange:(UITraitCollection * _Nullable)previousTraitCollection
パラメータ
previousTraitCollection | インターフェース環境が変更される前の UITraitCollection。 |
議論
iOS のインターフェイス環境が変化したときにシステムがこのメソッドを呼び出します。このような変化に対応するために、あなたのアプリの必要性に応じて、ビューコントローラとビューで、このメソッドを実装します。例えば、iPhone をポートレートからランドスケープに回転させた場合、ビューコントローラのサブビューのレイアウトを調整するでしょう。このメソッドのデフォルト実装は空です。
実装の開始時に、ビュー階層の上位のインターフェイス要素が最初にレイアウトを調整する機会があるのを確認するために、super を呼び出します。このようなコードを使用して下さい。
- - (void) traitCollectionDidChange: (UITraitCollection *) previousTraitCollection {
-         [super traitCollectionDidChange: previousTraitCollection];
-         if ((self.traitCollection.verticalSizeClass != previousTraitCollection.verticalSizeClass)
-                 || self.traitCollection.horizontalSizeClass != previousTraitCollection.horizontalSizeClass)) {
-                 // your custom implementation here
-         }
- }
iOS 8.0 以降で利用可能。