开发相关工具IOS日常开发

iOS全局设置xib主题颜色

2018-12-12  本文已影响61人  木头Lee

之前多次看到有人问怎么实现xib中的颜色管理,就是app切换主题色的时候,xib中的颜色也会跟着变化。其实自己一开始也是没有比较好的方案的,后来学习到IB_DESIGNABLEIBInspectable两个属性,联想到xib设置主题色,自己试了下,通过这种方式是可以实现全局设置xib的主题色的,现总结在这,希望可以帮到更多需要的兄dei。

Tips:关于IB_DESIGNABLEIBInspectable这两个属性,可以参考这篇文章


Ⅰ给UIView增加分类Category,在.h中声明一个bgColor属性,使用IBInspectable修饰该属性,如下

#import <UIKit/UIKit.h>

@interface UIView (LGCategory)

@property (nonatomic, strong) IBInspectable UIColor * bgColor;

@end

Ⅱ 完成上一步之后,在xib中就会增加一个输入框,如图所示:

image.png

Ⅲ 选中想要跟随主题色变色的控件,给BgColor属性随便设置一个颜色即可,如图:

image.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就可以了,效果如下:

WechatIMG85.png

Ⅵ 如果想要设置文本颜色,可以增加一个TextColor属性,然后在setter方法里面判断一些类型,设置文字颜色即可。如果各位大佬还有更好的方案,请留言讨论~

841544604799_.pic.jpg
上一篇 下一篇

猜你喜欢

热点阅读