UIColor+CrossFade 是一个 UIColor 分类,它添加了一个类方法,该方法返回由两个指定的 UIColor 对象在指定的比率(0.0 和 1.0 之间)交叉混合而成的 UIColor。
导入 UIColor+CrossFade.h,并按以下方式使用
UIColor *colorA = [UIColor redColor];
UIColor *colorB = [UIColor blueColor];
UIColor *crossFade = [UIColor colorForFadeBetweenFirstColor:colorA secondColor:colorB atRatio:0.5f];
// crossFade is purple
在比率 0.0f 时,结果是完全的第一颜色。在比率 1.0f 时,结果是完全的第二颜色。
请记住 - 您控制比率,它不必是线性的!ratio = powf((1 - value/valueNominal), 0.333f)
也同样有效。
还有一个方便的方法,该方法返回指定 firstColor 和 secondColor 之间的交叉混合增量数组(感谢 peyton!)
UIColor *colorA = [UIColor redColor];
UIColor *colorB = [UIColor blueColor];
NSUInteger steps = 5;
NSArray *steppedColors = [UIColor colorsForFadeBetweenFirstColor:firstColor lastColor:lastColor inSteps:steps];
// steppedColors is an NSArray of 5 UIColor objects, crossfaded in steps between firstColor and secondColor
您还可以使用一个版本的便利函数,该函数允许您定义方法在计算颜色步骤时使用的曲线,例如
NSArray *steppedColors = [UIColor colorsForFadeBetweenFirstColor:firstColor
lastColor:lastColor
withRatioEquation:^(float input) {
return powf(input, 1/4.0f);
}
inSteps:steps];
请参考所包含的 UIColorCrossFadeDemo 项目,该项目使用了极有用的 InfColorPicker,以获取进一步的用例。
如果您在您的应用程序中使用此功能,我很乐意听到您的反馈!