我正在寻找样品,它通过UIColor给我中间色。在下面的
例如,Get Slightly Lighter and Darker Color from UIColor
可以变得更轻盈UIColor的颜色较深。
但我需要从UIColor获得平均/中色。
有人帮我解决这个问题吗? 在此先感谢。
答案 0 :(得分:1)
在第一个代码示例中,您指向的颜色向上或向下调整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;
}