如何在Swift中更改UIImage的颜色

时间:2017-11-25 23:07:54

标签: ios swift uiimage uicolor

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

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

3 个答案:

答案 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()
    }
}

enter image description here

答案 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)