作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
iOS 13 引入了自动采用当前 UIUserInterfaceStyle
(又名浅色或深色模式)的 UIImage
实例。但是,似乎只有从命名或系统镜像构造此类镜像的方法(imageNamed:inBundle:withConfiguration:
或 systemImageNamed:withConfiguration:
)。
有没有办法从 Core Graphics 动态生成通用明暗模式 UIImage
(例如使用两个 CGImage
或使用 UIGraphicsImageRenderer)?
我没有看到任何 API,但也许我错了。
最佳答案
您无需创建新的 UIImageAsset
,而是从现有 UIImage
的 imageAsset
引用一个> 属性,您可以使用 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/
我是一名优秀的程序员,十分优秀!