にあるUIColor
を別のものにフェードインしようとしています。あるUIColorから別のUIColorへ手動で色あせます
- (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];
}
これは、値/各R/G/Bを取得し、割合に応じてそれをインクリメントんどの:私は一定の割合で色を計算するためにこの関数を作成しました。
これはうまく機能しますが、[UIColor purpleColor]
〜[UIColor redColor]
が正しく消えません。 0.1パーセントでは紫色ではなく緑色で表示されるため、紫色から赤色ではなく緑色から赤色に色あせて表示されます。
誰かが間違っていることを知っていますか?これを計算するのは間違ったアプローチですか?これを行うより正確な方法はありますか?
のバージョンを更新しました!非常に多くの赤、緑、青が...私はそれらがまっすぐにあると思った!ありがとう! – Luke
問題ありません。時には余分な目が必要になることもあります。 –