之前多次看到有人問怎么實現(xiàn)xib中的顏色管理,就是app切換主題色的時候,xib中的顏色也會跟著變化。其實自己一開始也是沒有比較好的方案的,后來學習到
IB_DESIGNABLE和IBInspectable兩個屬性,聯(lián)想到xib設置主題色,自己試了下,通過這種方式是可以實現(xiàn)全局設置xib的主題色的,現(xiàn)總結(jié)在這,希望可以幫到更多需要的兄dei。
Tips:關(guān)于IB_DESIGNABLE 和 IBInspectable這兩個屬性,可以參考這篇文章
Ⅰ給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