iOS全局设置xib主题颜色

作者: 木头Lee | 来源:发表于2018-12-12 16:54 被阅读61次

    之前多次看到有人问怎么实现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

    相关文章

      网友评论

        本文标题:iOS全局设置xib主题颜色

        本文链接:https://www.haomeiwen.com/subject/ewlphqtx.html