gpt4 book ai didi

ios - 从 UIColor 获取 MidColor

转载 作者:行者123 更新时间:2023-11-29 03:00:31 25 4
gpt4 key购买 nike

我正在寻找可以从传递的 UIColor 中获得中间颜色的示例。在下面的例如,Get Slightly Lighter and Darker Color from 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;
}

关于ios - 从 UIColor 获取 MidColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23358123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com