本文主要是介绍【iOS】深色模式适配记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
注:
1、iOS13开始支持深色模式;
2、xib无法适配iOS13之前的版本,只能把要设置颜色的控件连线到代码中,代码控制颜色;
3、使用的 LLDark 库实现适配,链式语法,很方便;
实现:
1、创建 Dark 的类别,实现方法+ (NSDictionary<id, id> *)llDarkTheme,返回通用颜色配置,设置themeColor(nil)传nil的话会从这里适配颜色
@implementation NSObject(Dark)+ (NSDictionary<id, id> *)llDarkTheme {return @{UIColor.whiteColor : UIColorFromRGB(0x1b1b1b),UIColor.blackColor : UIColor.whiteColor,UIColorFromRGB(0x666666) : UIColor.whiteColor,UIColorFromRGB(0x333333) : UIColor.whiteColor,UIColorFromRGB(0x999999) : UIColor.whiteColor};
}
2、设置自适应深色模式颜色值
self.backView.backgroundColor = UIColor.whiteColor.themeColor(UIColor.blackColor);
themeColor() 括号里的是深色模式颜色值。
3、有些无法自动改变颜色的需要监听模式改变,手动设置颜色:
self.themeDidChange = ^(id _Nonnull bindView) {};self.themeDidChange(self);
例:
CP_ThemeDidChange(^{weakself.titleLab.textColor = UIColorFromRGB(0x666666).themeColor(UIColor.whiteColor);});
封装的宏
#define WeakObj(objc) autoreleasepool{} __weak typeof(objc) weak##objc = objc#define CP_ThemeDidChange(block)\@WeakObj(self);\self.themeDidChange = ^(id _Nonnull bindView) {\block();\};\self.themeDidChange(self);\
有些适配了AttributedString的无法自动改变颜色就需要监听模式改变手动更改
4、CGColor也有对应方法 themeCGColor
_telView.layer.borderColor = UIColorFromRGB(0xeeeeee).themeCGColor(UIColorFromRGB(0x1b1b1b));
5、图片在Assets可以设置深色图片和浅色图片
这篇关于【iOS】深色模式适配记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!