Sto provando a svanire uno UIColor
in un altro in un drawRect
. Ho creato questa funzione per calcolare un colore ad una certa percentuale:Dissolvenza colore da un UIColor a un altro
- (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];
}
Quello che fa è introiti ogni// B/Un valore G R e lo incrementa a seconda della percentuale.
Funziona, ma non svanisce correttamente [UIColor purpleColor]
a [UIColor redColor]
. A 0,1 percento si presenta come un colore verde piuttosto che viola, quindi sembra sfumare dal verde al rosso invece che dal viola al rosso.
Qualcuno sa cosa sto facendo male? È questo l'approccio sbagliato per calcolare questo? C'è un modo più accurato per farlo?
Oh mio! Così tanti rossi, verdi e blu ... pensavo di averli fatti tutti! Grazie! – Luke
Nessun problema. A volte hai solo bisogno di un paio di occhi in più. –