介紹
UIApearance是一個(gè)協(xié)議掖看,我們可以通過(guò)它來(lái)獲取一個(gè)類的外觀代理芹枷。通過(guò)給這個(gè)類的外觀代理發(fā)送修改消息來(lái)自定義一個(gè)類的實(shí)例的外觀弟孟。
通常可以在全局設(shè)置某個(gè)類的某個(gè)屬性亚斋,這樣在整個(gè)APP中只要是用到該類的這個(gè)屬性時(shí)就會(huì)顯示自己設(shè)置的樣式垦藏。也可以將屬性設(shè)置為某個(gè)容器所包含的,比如設(shè)置不同控制器的NavigationBar的顯示樣式伞访。
用法
-
要修改的屬性需要在聲明的時(shí)候?qū)懨?code>UI_APPEARANCE_SELECTOR,例如
@property(nonatomic, strong) messageCellLayout *layout UI_APPEARANCE_SELECTOR;
一般自己定義的屬性要這樣顯示的聲明掂骏。因?yàn)橐恍┗镜膶傩匀鏤IButton 的@property(nonatomic) UIEdgeInsets contentEdgeInsets UI_APPEARANCE_SELECTOR;
系統(tǒng)已經(jīng)幫我們完成了這項(xiàng)工作。注意:后面要加
UI_APPEARANCE_SELECTOR
的是某個(gè)類里面的某一個(gè)屬性或者方法厚掷。意思是這個(gè)屬性或者方法可以在由這個(gè)類生成的對(duì)象在顯示到window之前被設(shè)置或者被調(diào)用 這個(gè)屬性所在的類要遵守
UIAppearance, UIAppearanceContainer
這兩個(gè)協(xié)議弟灼。不過(guò)一般我們修改的類都屬于UIView,而UIView已經(jīng)遵守了這兩個(gè)協(xié)議冒黑。所以我們不用顯示的遵守這兩個(gè)協(xié)議田绑,但必須知道這么回事。使用方法:要修改的屬性需要在該對(duì)象被加載到UIWindow之前被修改抡爹,否則無(wú)法修改顯示效果掩驱。所以一般而言,在APPDelegate中進(jìn)行設(shè)置冬竟,即程序加載完成之后就把這些屬性設(shè)置好欧穴。一般格式例如:
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
即這個(gè)類調(diào)用appearance方法(appearance是屬于UIAppearance協(xié)議的方法),然后調(diào)用修改屬性的方法泵殴,完成修改涮帘。
參考
南峰子的技術(shù)博客:http://www.cocoachina.com/ios/20150720/12671.html