gpt4 book ai didi

ios - 在 iOS 上插值渐变颜色(与 NSGradient 一样)?

转载 作者:行者123 更新时间:2023-11-28 19:06:12 26 4
gpt4 key购买 nike

AppKit 在 iOS 中不可用,所以我正在寻找替代品。

具体来说,我正在寻找一种替代方法:

- (NSColor *)interpolatedColorAtLocation: (CGFloat)location

我需要一种方法来定义渐变,并根据输入位置(float)查找颜色值。

最佳答案

如果您确实需要一个渐变对象(用于绘制渐变?),您可以使用 CG-level CGGradient “类”。

至于在渐变中的特定位置插值颜色,您需要知道的是周围的两种颜色(相对于您给定的位置)和它们之间的插值(t 将是0.0..1.0 之间的位置相对于两种颜色,而不是整个渐变):

- (UIColor *)colorByInterpolatingWith:(UIColor *)color factor:(CGFloat)factor {
factor = MIN(MAX(t, 0.0), 1.0);

const CGFloat *startComponent = CGColorGetComponents(self.CGColor);
const CGFloat *endComponent = CGColorGetComponents(color.CGColor);

float startAlpha = CGColorGetAlpha(self.CGColor);
float endAlpha = CGColorGetAlpha(color.CGColor);

float r = startComponent[0] + (endComponent[0] - startComponent[0]) * factor;
float g = startComponent[1] + (endComponent[1] - startComponent[1]) * factor;
float b = startComponent[2] + (endComponent[2] - startComponent[2]) * factor;
float a = startAlpha + (endAlpha - startAlpha) * factor;

return [UIColor colorWithRed:r green:g blue:b alpha:a];
}

使用示例:

UIColor *purpleColor = [[UIColor redColor] colorByInterpolatingWith:[UIColor blueColor] factor:0.5];

关于ios - 在 iOS 上插值渐变颜色(与 NSGradient 一样)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20323180/

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