iOS 暗黑模式适配
图片适配:
使用ImageSet
打开Assets.xcassets
新建一个Image set 选择右边栏的Appearances中对应的选项适配深色模式。
使用方法:[UIImage imageNamed:@"xxxx"];
图片适配颜色适配:
使用ColorSet
打开Assets.xcassets
新建一个Color set 选择右边栏的Appearances中对应的选项适配深色模式。
颜色适配使用方法:
self.view.backgroundColor = [UIColor colorNamed:@"xxxx"];
建议写一个通用的方法来设置颜色
举个栗子🌰:
注:[UIColor colorNamed:colorName]; 这个方法iOS11 之后才支持使用
self.view.backgroundColor = [self fitDeviceModeColorWithColorSetByColorName:colorName orWithColor:color];
-(UIColor *)fitDeviceModeColorWithColorSetByColorName:(NSString *)colorName orWithColor:(UIColor *)color{
if(@available(iOS11.0, *)) {
return [UIColor colorWithDynamicProvider:^UIColor*_Nonnull(UITraitCollection*_NonnulltraitCollection) {
return [UIColor colorNamed:colorName];
}];
}else{
return color;
}
}
适配暗黑遇到的问题:
1:tabbar图标在切换深色模式时,图标没有发生改变。重新打开app才生效
解决方案:
tabbar 在ImageSet中设置渲染模式为:Original Image。这样app切换深/浅模式后,tabbar图标会相对应发生变化。
tabbars 图标设置 适配深色模式2:有拉伸的图片在模式切换之后,图片没有发生变化。
解决方案:图片的拉伸在Image set 里设置Slicing。
拉伸图片适配暗黑模式禁用深色模式:
1: 在App内禁用深色模式: 可以在Info.plist(全局) 中,设置 User Interface Style 为 Light。
2: 在单个页面内禁用深色模式使用overrideUserInterfaceStyle: self.overrideUserInferfaceStyle = UIUserInterfaceStyleLight。
在单个页面内禁用浅色模式使用overrideUserInterfaceStyle: self.overrideUserInferfaceStyle = UIUserInterfaceStyleDark。