gpt4 book ai didi

ios - 如何从 Core Graphics 生成动态明暗模式 UIImage?

转载 作者:行者123 更新时间:2023-12-01 23:29:44 30 4
gpt4 key购买 nike

iOS 13 引入了自动采用当前 UIUserInterfaceStyle(又名浅色或深色模式)的 UIImage 实例。但是,似乎只有从命名或系统镜像构造此类镜像的方法(imageNamed:inBundle:withConfiguration:systemImageNamed:withConfiguration:)。

有没有办法从 Core Graphics 动态生成通用明暗模式 UIImage(例如使用两个 CGImage 或使用 UIGraphicsImageRenderer)?

我没有看到任何 API,但也许我错了。

最佳答案

您无需创建新的 UIImageAsset而是从现有 UIImageimageAsset 引用一个> 属性,您可以使用 UIImageAsset.register(_:with:) 方法向其中添加深色图像变体。


// Prepare a UIImage for light mode.
let lightImage: UIImage!

// Prepare a UIImage for dark mode.
let darkImage: UIImage!

// Register your dark mode image to the light mode image's image asset.
lightImage?.imageAsset?.register(darkImage, with: .init(userInterfaceStyle: .dark))

// Now your light mode image actually becomes a dynamic image. Use it.
someImageView.image = lightImage
someButton.setImage(lightImage, for: .normal)

或者使用这个 UIImage 扩展


extension UIImage {
func registerDarkImage(_ image: UIImage) {
if #available(iOS 12.0, *) {
imageAsset?.register(image, with: .init(userInterfaceStyle: .dark))
}
}
}

关于ios - 如何从 Core Graphics 生成动态明暗模式 UIImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58291886/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com