3

我刚刚在我的应用程序中添加了暗模式。

资产目录支持每个资产的多种外观,在 iOS 13 上,这意味着当系统在深色或浅色模式下运行时使用正确的资产。

xcode 图像资产目录外观 这些不是我的真实资产

我正在尝试在较旧的 iOS 版本上支持暗模式。 在我尝试这样做时,我添加了一个强制暗模式的覆盖,该模式适用于我的自定义颜色和主题,但不适用于图像。

dark是否可以在 iOS13 之前以编程方式访问图像的外观?

对于 iOS12,我尝试使用以下内容:

if #available(iOS 12.0, *) {
    let traits = UITraitCollection(userInterfaceStyle: .dark)
    let image = UIImage(
        named: "Image", 
        in: bundle, 
        compatibleWith: traits
    )
}

这只会返回正常的外观,并且方法命名似乎表明这只会检查我传递的特征集合是否与图像兼容。

4

1 回答 1

4

据我所知,仅使用一项资产是无法做到这一点的。在 iOS 13 以下系统将始终采用Any外观。您需要创建两个具有不同名称的不同图像集,然后选择其中一个。

这有点令人困惑,因为UIUserInterfaceStyle它在 iOS 12+ 中可用,但这很可能是因为 macOS 在当年获得了黑暗模式。

于 2019-10-11T14:47:04.940 回答