gpt4 book ai didi

ios - 如何在 Swift 中更改 UIImage 的颜色

转载 作者:搜寻专家 更新时间:2023-10-30 22:22:15 25 4
gpt4 key购买 nike

我很快,我正在尝试生成一个接受 UIImage 和 UIColor 并返回重新着色的 UIImage 的函数

我没有使用 UIImageView,这些只是我打算用作图标的 UIImage。有什么好的方法可以实现吗?

最佳答案

编辑/更新:

对于 iOS10+,我们可以使用 UIGraphicsImageRenderer:

Xcode 11 • Swift 5.1

extension UIImage {
func tinted(with color: UIColor, isOpaque: Bool = false) -> UIImage? {
let format = imageRendererFormat
format.opaque = isOpaque
return UIGraphicsImageRenderer(size: size, format: format).image { _ in
color.set()
withRenderingMode(.alwaysTemplate).draw(at: .zero)
}
}
}

Playground 测试

let camera = UIImage(data: try! Data(contentsOf: URL(string: "https://cdn4.iconfinder.com/data/icons/ionicons/512/icon-camera-128.png")!))!
let redCamera = camera.tinted(with: .red)

原始答案

您可以使用 UIGraphicsBeginImageContextWithOptions 开始图像上下文,设置所需的颜色并使用图像的方法 func draw(in rect: CGRect) 使用渲染模式绘制图标图像 .alwaysTemplate 在上面:

extension UIImage {
func tinted(with color: UIColor) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(size, false, scale)
defer { UIGraphicsEndImageContext() }
color.set()
withRenderingMode(.alwaysTemplate)
.draw(in: CGRect(origin: .zero, size: size))
return UIGraphicsGetImageFromCurrentImageContext()
}
}

enter image description here

关于ios - 如何在 Swift 中更改 UIImage 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47491393/

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