UIAppearance
通过UIAppearance,我们可以轻松的统一管理app界面的某些外观属性,以UINavigationBar为例有如下两个方法:
[UINavigationBar appearance]
[UINavigationBar appearanceWhenContainedIn:(nullable Class<UIAppearanceContainer>), ..., nil]
- 方法一是拿到应用中所有出现的UINavigationBar对象
- 方法二是拿到某个某个类中出现的UINavigationBar对象
示例代码,搭配富文本属性统一设置外观:
+(void)load
{
UINavigationBar *bar = [UINavigationBar appearanceWhenContainedIn:self, nil];
//统一设置当前自定义导航控制器类的导航条标题富文本
NSMutableDictionary *attr = [NSMutableDictionary dictionary];
attr[NSFontAttributeName] = [UIFont boldSystemFontOfSize:20];
bar.titleTextAttributes = attr;
//统一设置导航条背景图片
[bar setBackgroundImage:[UIImage imageNamed:@"navigationbarBackgroundWhite"] forBarMetrics:UIBarMetricsDefault];
}
注:使用方法一相对比较“暴力”,比如当调用弹出系统相册界面,让用户选择某张照片之类的功能时,会发现系统自带界面上的相关类也一同被修改了。因此使用哪个方法实现效果得根据具体需求而决定了。