在UIImageView上设置tintColor会产生意外的颜色输出

3

iPhone X上的TintColor iPhone SE上的TintColor

我有一个UIImageView,其tintColor属性设置为.red。此外,UIImageViewbackgroundColor也设置为.red

图片本身是一个pdf文件,设置为在我的资源目录中呈现模板。

上面的图片是在iPhone X上输出的,下面的图片是在iPhone SE上拍摄的。

我的问题是:当iOS对图像进行着色时,它在做什么?为什么两个设备之间存在如此巨大的差异?而且为什么图像总是比我设置的颜色更暗?

我期望当我设置了UIImageViewtintColor属性时,图像会以完全相同的颜色显示。

更新:

我添加了一个测试项目,其中包含一个草图文件和导出的pdf以重现此问题:

https://github.com/NickAtGit/TintTest


@nico-s 我在真机和模拟器上都试过了,结果一样。你能再检查一下图片的tint-Color和backgroundColor吗? - JhonnyTawk
你有哪个设备,@JhonnyTawk? - Nico S.
我在iPhone XS和iPhone 5s上进行了测试。 - JhonnyTawk
正如您在项目中所看到的,背景和tintColor都是红色的@JhonnyTawk。 - Nico S.
你使用的是哪个Xcode版本?也许那就是问题所在,但我怀疑。 - JhonnyTawk
显示剩余9条评论
1个回答

0

tint属性是将图像中每个像素的归一化(0-1)颜色乘以红色(1,0,0)。这导致图像仅应用了红色通道色调(蓝色和绿色都为零)。在SE图像中,蓝色和绿色通道上的色调未被遵守/应用(因为它们为零),导致与其他“着色”方案相比出现非标准行为,请参见XNA Draw() Color参数,在iPhone X的iOS中似乎已经得到了修正。 要使用较暗的图像,请将TintAdjustmentMode属性设置为TintAdjustmentMode.dimmed,否则请使用TintAdjustmentMode.normal


好的,那么我如何才能获得正确着色的图像呢? - Nico S.
这要看你认为哪个图像是正确的,是上面的还是下面的? - user10316640
我希望最上面的完全变成红色。 - Nico S.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接