我很快,我正在尝试生成一个接受UIImage和UIColor并返回UIImage重新着色的函数
我没有使用UIImageView,这些只是我打算用作图标的UIImages。有没有什么好方法可以实现呢?
答案 0 :(得分:11)
您可以使用UIGraphicsBeginImageContextWithOptions开始图像上下文,设置所需的颜色并使用图像的方法run()
使用渲染模式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()
}
}
答案 1 :(得分:3)
如果您使用PNG图像(因为我认为是因为图标) - 只需使用:
let originalImage = UIImage(named: "iconName")
let tintedImage = originalImage?.withRenderingMode(.alwaysTemplate)
yourButton.setImage(tintedImage, forState: .normal)
yourButton.tintColor = UIColor.blue //change color of icon
答案 2 :(得分:0)
iOS 13及更高版本(Swift 5.1):
声明
func withTintColor(_ color: UIColor) -> UIImage
用法:
yourUIImage.withTintColor(color: UIColor)