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

标签 ios swift xcode asset-catalog ios-darkmode

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

Assets 目录支持每个 Assets 的多种外观,在 iOS 13 上,这意味着当系统在暗模式或亮模式下运行时会使用正确的 Assets 。

xcode image asset catalog appearances 这些不是我的真实 Assets

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

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

对于 iOS12,我尝试使用以下方法:

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

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

最佳答案

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

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

关于ios - 如何访问 iOS13 之前的 UIImage 深色外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58341373/

相关文章:

ios - SpriteKit : Draw line using angle and Length

ios - Xcode UITest 推送通知提示无法点击 "Allow"

iphone - iOS - 升级到 Xcode 4.5 后链接器错误,Core Plot 相关?

ios - 将数组的 ValueForKey 与 NSString 进行比较

ios - 无法使用类型的参数列表调用 'bindToPort'

objective-c - 是否可以在现有 XCode 项目 (OS X) 中用 Chromium (CefBrowser) 替换 WebView?

ios - Discard all changes in Xcode source control 实际上做了什么?

iphone - 显示带有 Storyboard的一次性登录屏幕的最佳实践

ios - 计算总行驶距离不准确

swift - session.dataTask 不工作 swift