18

appearanceWhenContainedIniOS6アプリでカスタマイズしたい特定のUI要素でこのメソッドを使用しています。私が見つけた問題は、次のように複数のコンテナクラスを提供しようとすると、カスタマイズが適用されないことです。

// Works neither for toolbar nor navbar items
[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIToolbar class], nil]

// Works fine (but only for navbar items, obviously)
[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]

公式ドキュメントによると、このメソッドのパラメーターは、複数のクラスのnilで終了するリストである可能性がありますが、私の場合、本来の方法で機能することはありません。ここで何かが足りませんか?

4

1 に答える 1

43

ドキュメントから:

appearanceWhenContainedIn:

..。

特定の包含階層内のレシーバーの外観プロキシ。

つまり、nilで終了するリストは、UIBarButtonItemのコンテナクラスのリストではなく、上から下へのコンテナ階層を定義します。

[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIToolbar class], nil]

UINavigationBar内にあるUIBarButtonItemの外観プロキシを返し、UINavigationBarはUIToolbar内にあります。

また

[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class],[ViewController class], nil] setTintColor:[UIColor redColor]];

ViewControllerクラスにある任意のUIToolBarにあるUIBarButtonItemsに赤の色合いを設定します。

+appearanceWhenContainedIn:したがって、UINavigationBarとUIToolBarの外観を別々に設定するには、メソッドを2回別々に呼び出す必要があります。

于 2012-09-25T22:44:08.873 に答える