UIAppearance を使用してすべての UIBarButtonItem をカスタマイズしています。
[[UIBarButtonItem appearance] setTintColor:[UIColor purpleColor]];
色の選択が悪いことを除けば、それはうまく機能します。
ここで、特定のスタイルのボタンが必要です。そこで、新しいクラスを作成します。それを と呼びましょうYellowDoneBarButtonItem
。
私もそれをカスタマイズしたいので、追加します:
[[YellowDoneBarButtonItem appearance] setTintColor:[UIColor yellowColor]];
残念ながら、最後の呼び出しが優先され... appearance] setTintColor:
、すべてのボタンは、サブクラスであろうとなかろうと、最後に指定された色を採用します。
appearanceWhenContainedIn:
同じナビゲーション バーに 2 つの異なるボタン スタイルがある場合があるため、使用できません。
all or nothingUIAppearance
よりも選択的に使用する方法はありますか?
ドキュメントは次のように述べています。
どのビュー階層でも、最も外側の外観プロキシが優先されます。特異性 (チェーンの深さ) がタイブレーカーです。つまり、appearwhenWhenContainedIn: の包含ステートメントは、半順序として扱われます。具体的な順序付け (実際のサブビュー階層) が与えられると、UIKit は、ウィンドウから実際の階層を読み取るときに、最初に一意に一致する部分的な順序付けを選択します。
この事実をここで必要なものに曲げるトリックはありますか?