Ich versuche einen UIColor
zu einem anderen in einem drawRect
zu verblassen. Ich habe diese Funktion erstellt eine Farbe bei einem bestimmten Prozentsatz zu berechnen:Manuelles Farbverblassen von einem UIColor zum anderen
- (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];
}
Was das bedeutet ist, nimmt jede R/G/B/A-Wert und erhöht sich auf dem Prozentsatz abhängig.
Es funktioniert, aber nicht verblassen [UIColor purpleColor]
zu [UIColor redColor]
korrekt. Bei 0,1 Prozent erscheint es eher als eine grüne Farbe als lila, so dass es von grün zu rot statt von violett zu rot zu verblassen scheint.
Wer weiß, was ich falsch mache? Ist das der falsche Ansatz, um das zu berechnen? Gibt es einen genaueren Weg, dies zu tun?
Oh my! So viele Rot-, Grün- und Blautöne ... Ich dachte, ich hätte sie alle gerade! Vielen Dank! – Luke
Kein Problem. Manchmal braucht man nur ein zusätzliches Augenpaar. –