介绍
UIApearance是一个协议,我们可以通过它来获取一个类的外观代理。通过给这个类的外观代理发送修改消息来自定义一个类的实例的外观。
通常可以在全局设置某个类的某个属性,这样在整个APP中只要是用到该类的这个属性时就会显示自己设置的样式。也可以将属性设置为某个容器所包含的,比如设置不同控制器的NavigationBar的显示样式。
用法
-
要修改的属性需要在声明的时候写明
UI_APPEARANCE_SELECTOR
,例如@property(nonatomic, strong) messageCellLayout *layout UI_APPEARANCE_SELECTOR;
一般自己定义的属性要这样显示的声明。因为一些基本的属性如UIButton 的@property(nonatomic) UIEdgeInsets contentEdgeInsets UI_APPEARANCE_SELECTOR;
系统已经帮我们完成了这项工作。注意:后面要加
UI_APPEARANCE_SELECTOR
的是某个类里面的某一个属性或者方法。意思是这个属性或者方法可以在由这个类生成的对象在显示到window之前被设置或者被调用 这个属性所在的类要遵守
UIAppearance, UIAppearanceContainer
这两个协议。不过一般我们修改的类都属于UIView,而UIView已经遵守了这两个协议。所以我们不用显示的遵守这两个协议,但必须知道这么回事。使用方法:要修改的属性需要在该对象被加载到UIWindow之前被修改,否则无法修改显示效果。所以一般而言,在APPDelegate中进行设置,即程序加载完成之后就把这些属性设置好。一般格式例如:
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
即这个类调用appearance方法(appearance是属于UIAppearance协议的方法),然后调用修改属性的方法,完成修改。