施放色调后,Swift恢复原始图像颜色

时间:2017-02-12 11:28:20

标签: ios swift uiimageview

我在UIImageView内有一个带有默认颜色的图片,让我们说自定义灰色。
在我的代码中,我在某种程度上以这种方式设置了不同的tint

myImageView.image = myImageView.image!.withRenderingMode(.alwaysTemplate)
myImageView.tintColor = someCondition() ? UIColor.red : UIColor.lightGray

事实是我无法回到图像的原始灰色。我的问题是,是否有办法用UIColor.lightGray 而不是来代替UIImageView部分代码,以使用任何色调,但使用其原始颜色。

2 个答案:

答案 0 :(得分:6)

要不应用任何色调,您可以像这样设置图像渲染模式:

image.renderingMode = .alwaysOriginal

在您的代码中,您可以说:

let renderingMode: UIImageRenderingMode = condition ? .alwaysTemplate : .alwaysOriginal
myImageView.image = myImageView.image?.withRenderingMode(renderingMode)

答案 1 :(得分:0)

我正在使用这种方法来更改/删除水龙头上的色调

    var imageView:UIImageView = {
    let img = UIImageView()
    img.image = someImage.withRenderingMode(.alwaysTemplate)
    img.tintColor = .cyan
    return img
}()

通过动作将手势识别器添加到图像视图或按钮,然后仅分配已经分配给图像视图但具有不同渲染模式的图像

@objc func imgTap(){
   imageView.image! = imageView.image!.withRenderingMode(.alwaysOriginal)
}