您指向的代码在第一个代码示例中将颜色向上或向下步进 0.2,并在第二个代码示例中调整亮度。
我认为中间色是指以下两种情况之一:(1) 颜色本身,或 (2) 不像示例代码那样浅或深的东西。要实现后者,您需要做的就是更改亮度乘数,例如
@implementation UIColor (LightAndDark)
- (UIColor *)lighterColor
{
CGFloat h, s, b, a;
if ([self getHue:&h saturation:&s brightness:&b alpha:&a])
return [UIColor colorWithHue:h
saturation:s
brightness:MIN(b * 1.15, 1.0)
alpha:a];
return nil;
}
- (UIColor *)darkerColor
{
CGFloat h, s, b, a;
if ([self getHue:&h saturation:&s brightness:&b alpha:&a])
return [UIColor colorWithHue:h
saturation:s
brightness:b * 0.85
alpha:a];
return nil;
}
@end
还是您正在寻找两种颜色之间的颜色?现在正在处理这个问题,很快就会再次编辑。
更新:获得中间色使用:
- (UIColor *)betweenColor:(UIColor *)c andColor:(UIColor *)d
{
CGFloat r, g, b, a;
CGFloat r2, g2, b2, a2;
[c getRed:&r green:&g blue:&b alpha:&a];
[d getRed:&r2 green:&g2 blue:&b2 alpha:&a2];
return [UIColor colorWithRed:(r + r2)/2
green:(g + g2)/2
blue:(b + b2)/2
alpha:a];
return nil;
}
然后这样称呼它:
UIColor *midColor = [self betweenColor:[UIColor whiteColor] andColor:[UIColor blackColor]];
self.view.backgroundColor = midColor;
这是 HSB 中点:
- (UIColor *)betweenColor:(UIColor *)c andColor:(UIColor *)d
{
CGFloat h, s, b, a;
CGFloat h2, s2, b2, a2;
[c getHue:&h saturation:&s brightness:&b alpha:&a];
[d getHue:&h2 saturation:&s2 brightness:&b2 alpha:&a2];
return [UIColor colorWithHue:(h+h2)/2
saturation:(s+s2)/2
brightness:(b+b2)/2
alpha:a]; return nil;
}