从UIColor获取MidColor

我正在寻找样品,它通过UIColor给我中间色。 在以下示例中, 从UIColor获取稍微更浅和更深的颜色
可以从UIColor获得更浅和更深的颜色。 但我需要从UIColor获得平均/中色。

有人帮我解决这个问题吗? 提前致谢。

在第一个代码示例中,您指向的代码将颜色向上或向下调整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; }