UIAppearance
継承:なし
フレームワーク: iOS 5.0 以降の UIKit。関連情報...
概観
クラスの appearance プロキシを取得するには UIAppearance プロトコルを使用してください。クラスの appearance プロキシに appearance の変更メッセージを送信して、クラスのインスタンスの appearance をカスタマイズできます。
注意: iOS は、ビューがウィンドウに入った時 appearance の変更を適用しますが、ウィンドウにすでにあるビューの appearance を変更しません。ウィンドウ内の現在のビューの appearance を変更するには、ビュー階層からビューを削除し、それを元に戻します。
すべてのインスタンスのためには objects:、およびコンテナクラスのインスタンス内に含まれるインスタンスのために、オブジェクトの appearance をカスタマイズするには、2 つの方法があります。
- クラスのすべてのインスタンスの appearance をカスタマイズするには、クラスの appearance プロキシを取得するために appearance を使用して下さい。例えば、UINavigationBar のすべてのインスタンスのバーの背景の tint 色を変更するには:
- コンテナクラスのインスタンス内に含まれる、または階層内のインスタンスに含まれるときに、クラスのインスタンスの appearance をカスタマイズするには、appearanceWhenContainedIn: を使用し、クラスの appearnce プロキシを取得します。たとえば、ナビゲーションバーを含むオブジェクトに基づくバーボタンの appearance を変更するには:
- [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]
-         setBackgroundImage:myNavBarButtonBackgroundImage forState:state barMetrics:metrics];
- [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIPopoverController class], nil]
-         setBackgroundImage:myPopoverNavBarButtonBackgroundImage forState:state barMetrics:metrics];
- [[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil]
-         setBackgroundImage:myToolbarButtonBackgroundImage forState:state barMetrics:metrics];
- [[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], [UIPopoverController class], nil]
-         setBackgroundImage:myPopoverToolbarButtonBackgroundImage forState:state barMetrics:metrics];
[[UINavigationBar appearance] setBarTintColor:myNavBarBackgroundColor];
全ての与えられたビュー階層では、最も外側の appearance プロキシが勝ちます。特異性(チェーンの深さ) は、タイブレーカーです。言い換えれば、appearanceWhenContainedIn: に封じ込められた文は、一部の順序付けとして扱われます。与えられた具体的な順序(実際のサブビューの階層) は、UIKit は下のウィンドウから実際の階層を読み込む際に最初のユニークな一致である一部の順序付けを選択します。
さらに、どのクラスのインスタンスが、その appearance は、形質コレクションを指定することで、カスタマイズされるか絞り込めます。appearanceForTraitCollection: と appearanceForTraitCollection: whenContainedIn: メソッドを使用して、指定された形質コレクションを持つクラスのプロキシを取得して下さい。
appearance のカスタマイズをサポートするために、クラスは UIAppearanceContainer プロトコルに準拠しなければならず、関連するアクセサメソッドは UI_APPEARANCE_SELECTOR でマークされなければなりません。
タスク
Appearance メソッド
+ appearance 必須
受信者の appearance プロキシを返します。
宣言
<< SWIFT >>
static func appearance() -> Self << OBJECTIVE-C >> + (instancetype)appearance
戻り値
受信者の appearance プロキシ。
利用可能
iOS 5.0 以降で利用可能。
+ appearanceForTraitCollection: 必須
渡された形質コレクションを持っている受信者の appearance プロキシを返します。
宣言
<< SWIFT >>
static func appearanceForTraitCollection(_ trait: UITraitCollection) -> Self << OBJECTIVE-C >> + (instancetype)appearanceForTraitCollection:(UITraitCollection *)trait
パラメーター
trait | マッチングに使用する形質コレクション。 |
戻り値
受信者の appearance プロキシ。
利用可能
iOS 8.0 以降で利用可能。
+ appearanceForTraitCollection:whenContainedIn: 必須
(iOS 9.0)渡された形質コレクションを持つ、封じ込め階層内の受信者の appearance プロキシを返します。
宣言
<< OBJECTIVE-C >>
+ (instancetype)appearanceForTraitCollection:(UITraitCollection *)trait whenContainedIn:(Class<UIAppearanceContainer>)ContainerClass , ...
パラメーター
trait | マッチングに使用する形質コレクション。 |
ContainerClass, | appearance のコンテナクラスの nil で終了するリスト。 |
戻り値
与えられた封じ込め階層内の受信者の appearance プロキシ。
議論
このメソッドは、UIAppearanceContainer プロトコルに準拠したクラスオブジェクトでない var-args リストの全ての項目について例外を引き起こします。
利用可能
iOS 8.0 以降で利用可能。
iOS 9.0 で旧式となる。
+ appearanceWhenContainedIn:必須
(iOS 9.0)与えられた封じ込め階層内の受信者の appearance プロキシを返します。
宣言
<< OBJECTIVE-C >>
+ (instancetype)appearanceWhenContainedIn:(Class<UIAppearanceContainer>)ContainerClass , ...
パラメーター
ContainerClass, | appearance のコンテナクラスの nil で終了するリスト。 |
戻り値
与えられた封じ込め階層内の受信者の appearance プロキシ。
議論
このメソッドは、UIAppearanceContainer プロトコルに準拠したクラスオブジェクトではない var-args リストの全ての項目について例外を引き起こします。
利用可能
iOS 5.0 以降で利用可能。
iOS 9.0 で旧式となる。
次の章