iOS13+Swift5.1+Xcode11强制用户使用浅色模式/深色模式(就算用户切换为暗黑模式我们App的UI也不变)

2,995 阅读1分钟

需求场景:

iOS13之后,用户可以一键把iPhone的主题色设为深色模式,对于我们开发者来说,理论上我们的App需要再做一套深色模式下的UI,对于一些自定义比较多的App来说简直就是噩梦。

比如以下这些情况:

App的某些页面或全部页面都是webview做的,再做一套UI的话前端大哥甩手不干;或者页面里的字体颜色背景颜色不是用的苹果原生color。

总之就是不想搞两套UI。

解决方案:

让用户无论是在浅色还是深色模式下,我们App的UI始终不变

1.全局(全部页面都只用一种UI):

在info.plist里面加一个key:UIUserInterfaceStyle,把他的值设为LightDark

2.部分页面:

override func viewDidLoad() {
    super.viewDidLoad()
    if #available(iOS 13.0, *) {
        overrideUserInterfaceStyle = .light
        //overrideUserInterfaceStyle = .dark
    }
}

注:如果你的App只面向iOS13或以上的话,可以去掉if #available(iOS 13.0, *){}