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%时,它显示为绿色而不是紫色,因此它看起来从绿色变为红色而不是从紫色变为红色.
谁知道我做错了什么?这是计算这个的错误方法吗?有更准确的方法吗?