当我们封装第三方库的时候,我们通常会希望将Api设置的更灵活一些,以方便使用者进行定制,在这些自定义的需求里面,UI的定制又是一个比较大的需求。 苹果在设计UIKit的时候,也提供了一个Protocol用于定制,那就是UIAppearance。
使用场景
先看下UIAppearance的使用,试想一个场景,新建一个App,这个App的基础色是蓝色,NavigationBar都是蓝色背景,白色文字,同时所有页面的背景色都是浅灰色,文字默认的Font是宋体。如何实现这个需求呢?
先说通常的做法,很多App会基于系统的组件封装一套UI组件,这当然没有问题,比如我们继承UILabel,设计一个TestLabel,这个label会自动实现默认的font。 但是这种方式针对上面的需求,其实是有些重了,那有没有更轻一些的方法呢? 答案就是使用UIAppearance。
我们只需要在初始化的地方,设置一次基础颜色和字体等,后续创建的所有组件都会使用这个配置,先看下代码:
[UILabel appearance].font = [UIFont systemFontOfSize:13]; //只需设置一次
UILabel *label = [UIlabel new]; //后续所有的label都是默认13的字体
这里的appearance就是苹果统一设计的一套protocol,苹果的大部分UIKit相关的配置都会实现这套protocol,这样如果是系统性的配置,则只需要配置一次,后续就不用重复设置了。
定义
看下app