解決辦法:
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[UITabBar appearance] setTintColor:[UIColor blackColor]];
return YES;
}
在開(kāi)發(fā)中經(jīng)常遇到要多次重復(fù)需求,此時(shí)用appearance
可以大大簡(jiǎn)化工作量,但是appearance
使用的前提是,該類(lèi)已經(jīng)遵守@protocol UIAppearance <NSObject>
協(xié)議,并且實(shí)現(xiàn)+ (instancetype)appearance
方法赞赖。
appearance
和appearanceWhenContainedIn
的區(qū)別:
1、appearance
使用要慎重,因?yàn)?code>appearance是獲取的整個(gè)應(yīng)用中的另萤,很可能一不小心就把其他地方的也改了疆栏。
2多搀、使用appearanceWhenContainedIn
就會(huì)相對(duì)較安全,它只會(huì)統(tǒng)一修改制定類(lèi)里面的屬性摧阅。
appearance
使用注意:
- 一定要在
控件顯示之前
設(shè)置才有用,一般會(huì)放在+ (void)load
方法中而不放在+(void)initialize中,因?yàn)? (void)load方法只會(huì)調(diào)用一次委煤,+(void)initialize可能會(huì)調(diào)用多次堂油,使用時(shí)還需要判斷一下,如:
+ (void)initialize{
if (self == [UITabBarController class]) {
}
}
- 只有被
UI_APPEARANCE_SELECTOR
宏修飾的屬性素标,才能使用appearance
統(tǒng)一設(shè)置称诗,如:
- (void)setTitleTextAttributes:(nullable NSDictionary<NSString *,id> *)attributes forState:(UIControlState)state NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;