无法在我的Xcode应用程序中使用黑暗模式

时间:2019-11-22 12:38:20

标签: ios swift xib device ios-darkmode

我最近安装了最新的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”。

我还尝试过在system colors文件中使用新的xib,但是在不同模式之间切换不会改变任何内容。我尝试使用不同的颜色(例如橙色),只是看它是否显示,并且可以显示,但是在更改模式时不会切换。

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

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

完全不知道这是什么交易。似乎很简单,但根本无法正常工作。

2 个答案:

答案 0 :(得分:2)

这就是我为我的应用程序所做的工作,以支持iOS 13暗模式和运行ios <11.0的设备。假设您在暗和亮模式下的资产中都有一种颜色,称为“白色”

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

}else{
    cell.backgroundColor = UIColor.white
}

对于IOS 11以下的设备,它位于else部分,您的单元格将为white。 对于运行11 <= ios <13的设备,它将选择UIColor(name: "White")的亮模式。对于运行ios 13.0的设备,它也会选择UIColor(name: "White"),但要根据资产中定义的颜色的亮/暗模式版本

答案 1 :(得分:0)

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

原因:

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

解决方案:

在上面的11.0处更改部署目标,然后运行项目即可正常运行。

希望它会起作用。