如何在Swift中更改UIImage的颜色

TJB*_*k31 6 uiimage uicolor ios swift

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

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

Leo*_*bus 21

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

extension UIImage {
    func tinted(with color: UIColor) -> UIImage? {
        UIGraphicsImageRenderer(size: size, format: imageRendererFormat).image { _ in
            color.set()
            withRenderingMode(.alwaysTemplate).draw(at: .zero) 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

游乐场测试

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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


der*_*ida 6

如果您使用PNG图像(我认为是由于图标)-请使用:

let originalImage = UIImage(named: "iconName")
let tintedImage = originalImage?.withRenderingMode(.alwaysTemplate)
yourButton.setImage(tintedImage, forState: .normal)
yourButton.tintColor = UIColor.blue //change color of icon
Run Code Online (Sandbox Code Playgroud)

  • 模板图像也适用于 pdf。您应该在导入资源时更改资产目录中的渲染模式。 (2认同)