您所指向的代码在第一个代码示例中将颜色向上或向下步进 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;
}
@kết thúc
或者您正在寻找两种颜色之间的颜色?现在正在处理这个问题,很快就会再次编辑。
更新:使用中间颜色:
- (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;
}
Tôi là một lập trình viên xuất sắc, rất giỏi!