【问题标题】:Swift restore original image color after casting a tint投射色调后迅速恢复原始图像颜色
【发布时间】:2017-02-12 11:28:19
【问题描述】:

我在UIImageView 中有一张图片,它带有默认颜色,比如说自定义灰色。
在我的代码中,我以这种方式设置了不同的tint

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

事实是我无法恢复图像的原始灰色。我的问题是,是否有办法将我的代码中的 UIColor.lightGray 部分替换为告诉 UIImageView not 使用任何色调,但使用其原始颜色的内容。

【问题讨论】:

  • 你试过UIColor.clear还是nil
  • 是的,但不幸的是两者都使图像透明

标签: ios swift uiimageview


【解决方案1】:

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

image.renderingMode = .alwaysOriginal

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

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

【讨论】:

    【解决方案2】:

    我正在使用这种方法来更改/删除点击时的色调

        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)
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-02
      • 2012-06-07
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      • 2018-12-21
      • 2019-08-26
      相关资源
      最近更新 更多