2013-08-07 47 views
3

我爲一些UI類設置了自定義外觀。如何阻止某些控件的UIAppearance代理

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

所以,當我創建我的應用程序UIBarButtonItem'sUINavigationBar's對象,他們將有定義的外觀。

但是,如果想要某個對象具有標準外觀(不使用由代理定義),我需要手動將它的所有屬性設置爲默認值。

所以問題是:有什麼辦法阻止使用UIAppearance爲某些對象?

謝謝。

回答

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];

+0

請仔細閱讀該問題,我明白我可以手動將屬性更改爲默認值,但是如果我的UIAppearance代理更改了很多值,那麼將所有屬性逐個還原是很愚蠢的。所以我問如何阻止這個代理的一些UI控制 –