我在UIImageView
内有一个带有默认颜色的图片,让我们说自定义灰色。
在我的代码中,我在某种程度上以这种方式设置了不同的tint
myImageView.image = myImageView.image!.withRenderingMode(.alwaysTemplate)
myImageView.tintColor = someCondition() ? UIColor.red : UIColor.lightGray
事实是我无法回到图像的原始灰色。我的问题是,是否有办法用UIColor.lightGray
而不是来代替UIImageView
部分代码,以使用任何色调,但使用其原始颜色。
答案 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)
}