如何阻止UIAppearance代理进行某些控制

时间:2013-08-07 10:08:29

标签: ios objective-c uiappearance

我为自己的一些UI类设置了自定义外观。

[[UIBarButtonItem appearance] setTintColor:someColor];
...
[[UINavigationBar appearance] setBackgroundImage:someImage forBarMetrics:UIBarMetricsDefault];

因此,当我在我的应用程序中创建UIBarButtonItem'sUINavigationBar's个对象时,它们将定义外观。

但是如果想要某个对象具有标准外观(不使用代理定义),我需要手动将其所有属性设置为默认值。

所以问题是:有没有办法阻止UIAppearance使用某个对象?

谢谢。

1 个答案:

答案 0 :(得分:1)

编辑: 它可能不是你想做的100%,但你可以使用appearanceWhenContainedIn。

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

通过这种方式,您可以在一定程度上控制行为。

将属性设置为nil将使用默认外观:     [self.navigationController.navigationBar setTintColor:nil];