手动从一个UIColor褪色到另一个UIColor

Luk*_*uke 8 colors cgcolor uicolor drawrect ios

我试图将一个褪色UIColor到另一个drawRect.我创建了这个函数来计算某个百分比的颜色:

- (UIColor *)colorFromColor:(UIColor *)fromColor toColor:(UIColor *)toColor percent:(float)percent
{
    float dec = percent / 100.f;
    CGFloat fRed, fBlue, fGreen, fAlpha;
    CGFloat tRed, tBlue, tGreen, tAlpha;
    CGFloat red, green, blue, alpha;

    if(CGColorGetNumberOfComponents(fromColor.CGColor) == 2) {
        [fromColor getWhite:&fRed alpha:&fAlpha];
        fGreen = fRed;
        fBlue = fRed;
    }
    else {
        [fromColor getRed:&fRed green:&fGreen blue:&fBlue alpha:&fAlpha];
    }
    if(CGColorGetNumberOfComponents(toColor.CGColor) == 2) {
        [toColor getWhite:&tRed alpha:&tAlpha];
        tGreen = tRed;
        tBlue = tRed;
    }
    else {
        [toColor getRed:&tRed green:&tGreen blue:&tBlue alpha:&tAlpha];
    }

    red = (dec * (tRed - fRed)) + fRed;
    blue = (dec * (tGreen - fGreen)) + fGreen;
    green = (dec * (tBlue - fBlue)) + fBlue;
    alpha = (dec * (tAlpha - fAlpha)) + fAlpha;

    return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
Run Code Online (Sandbox Code Playgroud)

这样做取每个R/G/B/A值并根据百分比递增它.

这样的工作,但不褪色[UIColor purpleColor],以[UIColor redColor]正确的.在0.1%时,它显示为绿色而不是紫色,因此它看起来从绿色变为红色而不是从紫色变为红色.

谁知道我做错了什么?这是计算这个的错误方法吗?有更准确的方法吗?

Aar*_*den 5

你已经在最后几行交换了绿色和蓝色。