iOS 详解暗黑模式的关闭与适配

一、背景

暗黑模式一开启,APP没有适配,然后你发现,你输入的白底黑字,变成了白底白字,呈现在面前的,就是一片空白,是的,你没看错,就是一片空白。

来来来,有图有真相,我们以一叶来洞察整个森林,下面是一毛一样的页面和信息展示,只是分为正常和暗黑模式,显示效果显而易见。

1.正常Light模式


正常.PNG

2.暗黑模式,不要怀疑自己,没错,就是这样的。


暗黑模式.PNG

3.话说回来,为什么要大搞特搞暗黑模式呢?甚至还强势要求微信适配,,,其实,还是为了用户更好的体验,在黑暗模式下,减少对眼睛的刺激,这样,以后你慢慢会发现,你的kindle已经很久不用了。。
4.交代使用版本
iMac macOS Mojave 10.14.6
Xcode 11.3.1
备注:使用iPhone7测试,模拟器也是可以使用暗黑模式的:设置->开发者->打开暗黑模式(Dark Appearance)。

二、关闭暗黑模式(如果你想关闭暗黑模式的话,读完这一段就可以停下了)

在info.plist文件中添加key:User Interface Style,值类型是String,值为Light,重新运行项目即可;
如图:


3.png

如果是单页面想关闭暗黑模式的话,就用这句来实现:

// 这个属性会影响当前view/viewController/window以及它下面的任何内容;
self.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;

如果你想要的是关闭暗黑模式的话,读到这里可以say goodbye了。

三、适配暗黑模式

1.判断当前设备是否是暗黑模式
// 判断是否是暗黑模式
BOOL isDark = (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark);

2.没改完,某些页面还不支持暗黑模式
// 设置单个页面不跟随暗黑模式改变
self.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
3.系统颜色

在iOS13中,系统颜色是根据系统是默认模式还是暗黑模式而变化的。
苹果提供了一组动态颜色。


systemcolor.png
4.语义化颜色

苹果还提供了一套根据颜色使用目的而约定颜色名称的语义化颜色,也是动态颜色。


elementcolor.png
5.自定义颜色设置

在iOS 11中,我们可以直接在images.xcassets中添加颜色,现在加入暗黑模式对应的颜色。


自定义颜色.png

使用时直接取颜色即可[UIColor colorNamed:@"atest_color"]

6.(占位ing)
// 占位ing
// SF Symbols
// 模糊效果
// 富文本
// layer
// 其他新的变更

四、总结

还是感觉,别人写的文章好专业,自己还是花的时间和精力远远不够,到底应该如何平衡呢?

参考资料:

写给设计师的指南

Backwards compatibility for iOS 13 system colors

你可能感兴趣的:(iOS 详解暗黑模式的关闭与适配)