创建一个不透明的UIColor,它与另一个半透明的UIColor相同

use*_*702 4 cocoa-touch alpha colors uicolor

这种颜色

[UIColor colorWithRed:75.0/255.0 
                green:215.0/255.0
                 blue:100.0/255.0 
                alpha:0.5]
Run Code Online (Sandbox Code Playgroud)

而这一个,具有不同的RGB值,没有透明度,

[UIColor colorWithRed:165.0/255.0 
                green:235.0/255.0 
                 blue:177.0/255.0 
                alpha:1]
Run Code Online (Sandbox Code Playgroud)

在白色背景上看起来完全一样.

我如何从第一个UIColor到第二个UIColor

Nil*_*ect 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];
Run Code Online (Sandbox Code Playgroud)

虽然数字不等于您的示例,但这是一个通用的合理混合函数.没有更多的例子,很难知道你的例子的曲线是什么.您正在使用的混合功能似乎对每个颜色分量使用不同的比率,或者您可能通过屏幕的颜色配置文件调整结果颜色值的测量值.