iOS13之前如何访问UIImage深色外观

Posted

技术标签:

【中文标题】iOS13之前如何访问UIImage深色外观【英文标题】:How can I access UIImage dark appearance pre iOS13 【发布时间】:2020-02-08 23:43:30 【问题描述】:

我刚刚为我的应用添加了深色模式。

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

这些不是我真正的资产

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

我认为您可能是对的,我花了下午的大部分时间尝试各种访问dark 变体的方法,即使UIImageAsset 也无法让我到达那里。悲伤的时光。 是的,不幸的是它不向后兼容。我建议尽可能使用可着色的图像,因为这样更容易改变颜色。 谢谢,是的,我们的大多数图标都是锡制的,我们只是有一些涉及更多的数字图形。现在接受这个似乎是唯一的出路。

以上是关于iOS13之前如何访问UIImage深色外观的主要内容,如果未能解决你的问题,请参考以下文章

为深色模式更改 UIDatePicker 选定的日期文本颜色(iOS 13)

如何在模拟器 iOS 12.4 中使用暗模式?

iOS13分享表:分享UIImage时如何设置预览缩略图

如何检查 iOS/iPadOS 中是不是启用了深色模式?

iOS13禁用深色模式

UIPicker 深色 ios13 :