關(guān)于Appearance的一些性質(zhì):
1.只要遵守了UIAppearance協(xié)議,還要實現(xiàn)這個方法
?2.哪些屬性可以通過appearance設(shè)置,只有被UI_APPEARANCE_SELECTOR修飾的屬性
3.appearance:只能在控件顯示之前設(shè)置,才能有作用
4.如果view大規(guī)模變化的話,可以使用appearance例如:夜間模式
可能遇到的坑:
比方說 UINavigationBar *bar = [UINavigationBar appearance]用來設(shè)置項目中關(guān)于navigation bar的一些操作,殊不知,如果我們在項目中調(diào)用到了通訊錄的話,通訊錄也是有navbar的,那我們之前設(shè)置的內(nèi)容可能就會影響到它,所以如果涉及到其他的navbar就不能單純的用appearance,為了保險,可以采取以下方法:
根據(jù)IOS的系統(tǒng)不同的兩套方式,也是以navbar為例
#define IOS9 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0 ? YES:NO)
//設(shè)置導(dǎo)航欄主題
UINavigationBar *navBar = [UINavigationBar appearance];
if(IOS9)
{
navBar = [UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[self class]]];
}else
{
navBar = [UINavigationBar appearanceWhenContainedIn:self, nil];
}