Swift 3:UIImage 设置为模板图像并更改色调颜色时不显示图像

Posted

技术标签:

【中文标题】Swift 3:UIImage 设置为模板图像并更改色调颜色时不显示图像【英文标题】:Swift 3: UIImage when set to template image and changed tint color does not show image 【发布时间】:2017-01-19 07:53:27 【问题描述】:

在 Swift 3 中,当我尝试以编程方式更改从资产加载的图像的颜色时,如下所示:

let imageView = UIImageView()
let image = UIImage(named: "imageFromAssets")?.withRenderingMode(.alwaysTemplate)
imageView.contentMode = .scaleAspectFit
imageView.tintColor = GREEN_UICOLOR // Change to custom green color
imageView.image = image

图片在下方显示为方块:

然而,有趣的是这并不总是发生。使用资产中的其他一些图像,它可以工作并将色调更改为绿色:

为什么会出现不一致的行为?一般来说,如何将模板图像添加到资产中,并能够以编程方式更改其颜色?我意识到当我不将图像更改为模板图像时它可以工作,但我不能这样做,因为我想更改图像的色调。

【问题讨论】:

查看图片,应该是由alpha和一个颜色组成 【参考方案1】:

对于模板图像,背景需要是透明的 - 不是白色的。

【讨论】:

【参考方案2】:

模板图像通过使用图像的不透明度属性来工作。

如果您的图像具有透明背景,则透明背景将保持透明,而图像的所有其余部分都将更改为微小的颜色。

如果您的图片没有透明背景。说它有一个白色的背景。然后整个图像将更改为淡色(就像您在示例中看到的那样)。

要解决此问题,您需要为该图像提供透明背景。

还值得注意的是,您不需要该代码。如果您仅在模板模式下使用图像,则只需在资产目录中选择呈现模式即可。

【讨论】:

以上是关于Swift 3:UIImage 设置为模板图像并更改色调颜色时不显示图像的主要内容,如果未能解决你的问题,请参考以下文章

UiImage swift 3中的Mysql blob图像显示

swift UIImage蓝色方块

swift 扩展用于更改UIImage。这对于UIButton的设置突出显示图像很有用。

如何在 UIImage 数组中设置第二张或中间的图像? (斯威夫特 3)

在swift中使用UIColor(patternImage:UIImage(named:“myimage.jpg”))设置背景时如何获取视图的背景颜色或图像

在Swift中使用WatchKit通过程序设置UIImage动画