如何仅为UIImage的非白色部分设置色调颜色?

时间:2017-04-07 20:43:40

标签: ios swift uiimageview

简单我有两个人的UIImageView图标,它看起来像这样:

enter image description here

但是当我将tintColor设置为红色时,它看起来像这样:

enter image description here

有没有办法避免覆盖每个非零-α像素?我需要在那里展示 tie 。有一次我需要人红,其他时间需要绿色。

图标是简单的png文件。圆形圆圈是UIImageView的简单背景颜色。因此, tie 的图片部分不能零-α

有没有办法实现这样的效果没有为每种颜色创建图像?

2 个答案:

答案 0 :(得分:1)

这与我一直在玩的另一个想法类似,所以我做了一些更多的摆弄......

从这3张图片开始:

enter image description here enter image description here enter image description here

然后将它们用作SELECT DISTINCT `blueid`,`scannerid`,`datetime` FROM discovereddevices WHERE date(datetime) = CURRENT_DATE. 来提供所需的颜色......然后通过.withRenderingMode(.alwaysTemplate)对它们进行分层以获得:

enter image description here

和#34;爆炸"为了清楚起见...

enter image description here

创建一个图像,其中"人员" 100%透明 - 有效"孔"在图像中。

将UIImageView的背景颜色设置为" fill"颜色。

如果您不想将白色边框作为图像的一部分,您仍然可以用圆圈(例如CAShapeLayer)对其进行遮罩。

原始图片: https://i.stack.imgur.com/eFrmB.png https://i.stack.imgur.com/2GNDX.png

答案 1 :(得分:0)

使用CISpotColor过滤器:

https://developer.apple.com/library/content/documentation/GraphicsImaging/Reference/CoreImageFilterReference/#//apple_ref/doc/filter/ci/CISpotColor

这允许您指定图像中要更改为其他颜色的颜色。因此,既然您知道领带的原始颜色和背景,您可以一次性更改它们中的任何一个或两个。