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

问题描述 投票:1回答:2

我最近安装了最新的Xcode 11.2.1,并将iPhone设备的iOS更新为13.2.3,针对模拟器的iOS更新为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按钮中切换模式。

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

ios swift xib device ios-darkmode
2个回答
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"),但要根据资产中定义的颜色的亮/暗模式版本


0
投票

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

原因:

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

解决方案:

在上面的11.0中将您的部署目标更改为它并运行项目,一切正常。

希望它会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.