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

时间:2018-03-12 17:05:52

标签: ios uikit tintcolor

TintColor on iPhone X TintColor on iPhone SE

我有一个UIImageViewtintColor属性设置为.red。此外,backgroundColor的{​​{1}}也设置为UIImageView

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

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

我现在的问题是:在着色图片时iOS正在做什么?为什么这两个设备之间存在如此巨大的差异?为什么图像总是比我设置的颜色更暗?

我预计当我设置.red的{​​{1}}属性时,图片会以完全相同的颜色显示。

更新:

我添加了一个带有草图文件和导出的pdf的测试项目来重现问题:

https://github.com/NickAtGit/TintTest

1 个答案:

答案 0 :(得分:0)

tint属性是将图像中每个像素的规格化(0-1)颜色乘以Red(1,0,0)。结果图像仅应用了红色通道色调(蓝色和绿色均为零)。在SE图像中,蓝色和绿色通道上的色彩不被接受/应用(因为它们为零),因此与其他“着色”方案相比,导致行为不规范,请参阅XNA Draw()颜色参数,该参数似乎在iPhone X的iOS中更正。 要使用较暗的图像,请将TintAdjustmentMode属性设置为TintAdjustmentMode.dimmed,否则使用TintAdjustmentMode.normal