此颜色
[UIColor colorWithRed:75.0/255.0
green:215.0/255.0
blue:100.0/255.0
alpha:0.5]
和这个,具有不同的RGB值且没有透明度,
[UIColor colorWithRed:165.0/255.0
green:235.0/255.0
blue:177.0/255.0
alpha:1]
在白色背景上看起来完全相同。
如何从第一个UIColor
转到第二个UIColor
?
答案 0 :(得分:5)
嗯,答案将特别依赖于了解背景颜色。假设backgroundColor
和sourceColor
是UIColors:
float blend(float src, float srcAlpha, float background) {
return (background + src * srcAlpha) / 2;
}
UIColor *result = [UIColor colorWithRed:blend([sourceColor red], [sourceColor alpha], [backgroundColor red])
green:blend([sourceColor green], [sourceColor alpha], [backgroundColor green])
blue:blend([sourceColor blue], [sourceColor alpha], [backgroundColor blue])
alpha:1.0f];
虽然数字不等于你的例子,但这是一个合理的混合函数,它是通用的。没有更多的例子,很难知道你的例子的曲线是什么。您正在使用的混合功能似乎对每个颜色分量使用不同的比例,或者您可能会根据屏幕的颜色配置文件调整结果颜色值的测量值。
答案 1 :(得分:0)
NilObject的答案很好,但我最终使用了一些更具体的问题。
我想要不同色调的基色是:
cell.backgroundColor = [UIColor colorWithRed:75.0/255.0 green:215.0/255.0 blue:100.0/255.0 alpha:1];
这是我的解决方案:
cell.backgroundColor = [UIColor colorWithRed:1 - (255-75)*rate/255.0 green:1 - (255-215)*rate/255.0 blue:1 - (255-100)*rate/255.0 alpha:1];
rate
将替换alpha