首页 iOS 开发关于暗黑模式 (Dark Model) 的问题
文章
取消

iOS 开发关于暗黑模式 (Dark Model) 的问题

问题

iOS 13 中苹果终于引入了 暗黑模式 (Dark model). 这一特性虽然让人兴奋, 但是开发者在刚接触的时候也遇到了一些问题.

虽然已经发布的 App 在 Dark model 下没有任何问题 (默认关闭 Dark model). 但是我们的 新项目老项目使用 Xcode 11 编译之后 部分控件使用了原生默认配置, 就会出现部分控件自动适配了 Dark model, 但是我们的自定义控件依旧是自定义的样式, 导致整体 UI 看起来不协调.

解决办法

解决这个问题有 2 个办法:

  1. 为 App 适配 Dark Model 的样式.
  2. 关闭工程的 Dark Model, 让其只支持我们原本的样式, 不对 Dark Model 自动适配.

适配 Dark Model

适配 Dark Model 需要公司 UI 为 Dark Model 专门设计一套 UI. 估计大部分公司不会费这种洋工夫.

关闭 Dark Model

1. 关闭工程的 Dark Model 很简单.

Info.plist 文件中添加字段 User Interface Style 其值设置为 Light. 这样系统就不会为你提供默认的 Dark Model 的适配了.

2. 关闭部分控制器的 Dark Model

iOS 13 中,UIView, UIViewController, UIWindow 新增了一个 overrideUserInterfaceStyle 的属性.

overrideUserInterfaceStyle 属性可以强制设置当前 视图 以及 子视图 的模式.

1
view.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;

就可以使 view 以及其 子视图 的模式总是 Light 模式. 想同的 Dark 模式也是同理.

本文由作者按照 CC BY 4.0 进行授权