【问题标题】:Can't get dark mode to work in my Xcode app无法在我的 Xcode 应用程序中使用暗模式
【发布时间】:2020-03-18 12:57:15
【问题描述】:

我最近安装了最新的 Xcode 11.2.1 并将 iOS 更新到 iPhone 设备的 13.2.3 和模拟器的 13.x。我正在尝试在我的应用程序中实现暗模式,但我只能让它与 Apple 框架的东西一起使用,比如alertControllers 等,而不是我自己的viewControllers

使用代码我尝试使用它只是为了看看是否有效:

if #available(iOS 13, *) {
    if traitCollection.userInterfaceStyle == .dark {
        print("????????DARK MODE")
        cell.backgroundColor = UIColor.black
    }else {
        print("????????LIGHT MODE")
        cell.backgroundColor = UIColor.white
   }
}

但它没有正确触发。当暗模式处于活动状态时,它会记录“LIGHT MODE”,但如果亮模式/正常模式处于活动状态,则反之亦然;它仍然会触发“LIGHT MODE”,但有时似乎会随机触发“DARK MODE”。

我也尝试在我的xib 文件上使用新的system colors,但是在不同模式之间切换没有任何改变。我尝试了不同的颜色,比如橙色,只是为了看看它是否显示,它确实显示了,但是在更改模式时它没有切换。

最后我尝试添加我自己的系统颜色,方法是将它们添加到资产文件夹中,将外观设置为“任何、浅色、深色”,添加替代颜色,然后在我的 xib 上使用该颜色。这给了我一个错误:Named colors do not work prior to iOS 11.0。但就像我说的,我在模拟器和设备上都使用 iOS 13,所以不确定这是怎么回事。

请注意,我已经尝试在设备或模拟器的系统偏好设置以及新的environment override 按钮中切换模式。

根本不知道交易是什么。看起来很简单,但根本无法让它工作。

【问题讨论】:

  • 我发现这个特征集合非常不可靠,所以我在 viewDidLayoutSubviews 中完成了所有代码设置。但如果你使用界面生成器,我认为你可以在那里设置暗模式颜色。

标签: ios swift xib device ios-darkmode


【解决方案1】:

这就是我为我的应用所做的,以支持 iOS 13 暗模式和运行 ios

if #available(iOS 11.0, *) {
    cell.backgroundColor = UIColor(name: "White")

}else{
    cell.backgroundColor = UIColor.white
}

对于低于 IOS 11 的设备,它位于 else 部分,您的单元格将是 white。 对于运行 11UIColor(name: "White") 的轻量模式。对于运行 ios 13.0 的设备,它还会选择 UIColor(name: "White"),但根据资产中定义的颜色的明暗模式版本

【讨论】:

    【解决方案2】:

    上述错误: 这给了我一个错误:命名颜色在 iOS 11.0 之前不起作用。但就像我说的,我在模拟器和设备上都使用 iOS 13,所以不确定这是怎么回事。

    原因:

    实际的问题是您的 iOS 部署目标低于 11.0,因此它在 11.0 以下无法工作。

    解决方案:

    将您的部署目标更改为 11.0 以上并运行您的项目,它工作正常。

    希望它会起作用。

    【讨论】:

    • 啊,谢谢,但这不意味着每个下载应用程序的人都需要 iOS 11 吗?
    • @screenMonkeyMonkeyMan 如果您将部署目标设置为 11.0,这意味着您的应用将支持 11.0 及更高版本,但不低于 11.0
    • @screenMonkeyMonkeyMan 比,如果我们无法添加资产颜色,我们将无法以这种方式实现暗模式。
    • 好的,因此资产颜色仅在您将 iOS 11 作为开发目标时才有效。对于 iOS 11 以下的用户,它不会恢复为某些默认颜色或“浅色”颜色吗?因此,如果您想要 iOS 13 用户的暗模式和 iOS 13 以下用户的“常规模式”,那么您需要使用系统颜色或代码吗? (对于 13 岁以下的用户,系统颜色会恢复为“浅”色吗?)
    猜你喜欢
    • 2020-01-31
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 2022-08-10
    相关资源
    最近更新 更多