iOS全局设置xib主题颜色
2018-12-12 本文已影响61人
木头Lee
之前多次看到有人问怎么实现xib中的颜色管理,就是app切换主题色的时候,xib中的颜色也会跟着变化。其实自己一开始也是没有比较好的方案的,后来学习到
IB_DESIGNABLE
和IBInspectable
两个属性,联想到xib设置主题色,自己试了下,通过这种方式是可以实现全局设置xib的主题色的,现总结在这,希望可以帮到更多需要的兄dei。
Tips:关于IB_DESIGNABLE
和 IBInspectable
这两个属性,可以参考这篇文章
Ⅰ给UIView增加分类Category,在.h中声明一个bgColor属性,使用
IBInspectable
修饰该属性,如下
#import <UIKit/UIKit.h>
@interface UIView (LGCategory)
@property (nonatomic, strong) IBInspectable UIColor * bgColor;
@end
Ⅱ 完成上一步之后,在xib中就会增加一个输入框,如图所示:
![](https://img.haomeiwen.com/i2068665/368058b7bf5b6c5a.png)
Ⅲ 选中想要跟随主题色变色的控件,给BgColor属性随便设置一个颜色即可,如图:
![](https://img.haomeiwen.com/i2068665/c0edce4b8113632f.png)
Tips:不想跟随主题色变色不需要设置该属性,直接Default即可
Ⅳ 然后重写第一步声明的那个属性的setter和getter方法,如下:
#import "UIView+LGCategory.h"
@implementation UIView (LGCategory)
- (UIColor *)bgColor
{
return self.backgroundColor;
}
-(void)setBgColor:(UIColor *)bgColor
{
self.backgroundColor = THEME_COLOR; // 在这里将颜色改为自己的主题色即可
}
@end
Ⅴ 然后在切换主题色的时候直接修改THEME_COLOR就可以了,效果如下:
![](https://img.haomeiwen.com/i2068665/3a21eb69264ac553.png)
Ⅵ 如果想要设置文本颜色,可以增加一个TextColor属性,然后在setter方法里面判断一些类型,设置文字颜色即可。如果各位大佬还有更好的方案,请留言讨论~
![](https://img.haomeiwen.com/i2068665/d5bdec319114c89d.jpg)