UIAppearance

1> 只要遵守了UIAppearance协议,还要实现这个方法才能调用appearance相关方法

2> 只有被UI_APPEARANCE_SELECTOR宏修饰的属性,才能设置

// 获取整个应用程序下的UITabBarItem
UITabBarItem *item = [UITabBarItem appearance];
    
// 获取某个类中的UITabBarItem
UITabBarItem *item = [UITabBarItem appearanceWhenContainedIn:self, nil];

3> 只能在控件显示之前设置才有作用

/*
   使用场景:切换夜间模式 
    
    移除整个view后,重新添加,达到刷新界面的效果
*/
[self.view removeFromSuperview];

[[UIApplication shareApplication].keyWindow addSubview:self.view];
原文地址:https://www.cnblogs.com/sjxjjx/p/5505465.html