一、背景
暗黑模式一开启,APP没有适配,然后你发现,你输入的白底黑字,变成了白底白字,呈现在面前的,就是一片空白,是的,你没看错,就是一片空白。
来来来,有图有真相,我们以一叶来洞察整个森林,下面是一毛一样的页面和信息展示,只是分为正常和暗黑模式,显示效果显而易见。
1.正常Light模式
2.暗黑模式,不要怀疑自己,没错,就是这样的。
3.话说回来,为什么要大搞特搞暗黑模式呢?甚至还强势要求微信适配,,,其实,还是为了用户更好的体验,在黑暗模式下,减少对眼睛的刺激,这样,以后你慢慢会发现,你的kindle已经很久不用了。。
4.交代使用版本
iMac macOS Mojave 10.14.6
Xcode 11.3.1
备注:使用iPhone7测试,模拟器也是可以使用暗黑模式的:设置->开发者->打开暗黑模式(Dark Appearance)。
二、关闭暗黑模式(如果你想关闭暗黑模式的话,读完这一段就可以停下了)
在info.plist文件中添加key:User Interface Style,值类型是String,值为Light,重新运行项目即可;
如图:
如果是单页面想关闭暗黑模式的话,就用这句来实现:
// 这个属性会影响当前view/viewController/window以及它下面的任何内容;
self.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
如果你想要的是关闭暗黑模式的话,读到这里可以say goodbye了。
三、适配暗黑模式
1.判断当前设备是否是暗黑模式
// 判断是否是暗黑模式
BOOL isDark = (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark);
2.没改完,某些页面还不支持暗黑模式
// 设置单个页面不跟随暗黑模式改变
self.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
3.系统颜色
在iOS13中,系统颜色是根据系统是默认模式还是暗黑模式而变化的。
苹果提供了一组动态颜色。
4.语义化颜色
苹果还提供了一套根据颜色使用目的而约定颜色名称的语义化颜色,也是动态颜色。
5.自定义颜色设置
在iOS 11中,我们可以直接在images.xcassets中添加颜色,现在加入暗黑模式对应的颜色。
使用时直接取颜色即可[UIColor colorNamed:@"atest_color"]
6.(占位ing)
// 占位ing
// SF Symbols
// 模糊效果
// 富文本
// layer
// 其他新的变更
四、总结
还是感觉,别人写的文章好专业,自己还是花的时间和精力远远不够,到底应该如何平衡呢?
参考资料:
写给设计师的指南
Backwards compatibility for iOS 13 system colors