gpt4 book ai didi

ios - 颜色作为 slider 位置的函数,用于设置颜色

转载 作者:行者123 更新时间:2023-12-01 17:49:58 31 4
gpt4 key购买 nike

我正在尝试创建一个用户可以使用的颜色选择器工具。颜色选择器有一个所有颜色的 slider 和一个额外的 slider 来设置颜色的深浅。两者都显示在图 1 和图 2 中:

图片 1 : 选择颜色:

Image 1

图 2 : 设置颜色有多深

enter image description here

我知道我可以为 slider 使用自定义图像,而不是将每种颜色与一个位置匹配,这意味着我需要创建巨大的数组并且需要做很多工作。设置颜色深浅的​​第二个 slider 仍需要在运行时计算。我怀疑这种方法有什么好处,因此问你是否对如何解决这个问题有更好的想法。也许一个将颜色与 slider 位置联系起来的数学函数,color(x),其中 x 是 slider 的位置,可以解决问题。那么如何根据位置创建颜色并基于此数学函数创建 slider ?

最佳答案

我以前这样做的方式就是使用图像。

您可以根据它的位置渲染每个像素等......但这是非常密集的东西,图像实际上不会改变。

各种应用程序已经内置了色调渐变(Pixelmatr 和 Photoshop 都有)。

只需创建一个色调渐变图像并在色调 slider 后面使用它。

对于亮度 slider ,创建一个透明的黑色渐变图像并将其放在 slider 上。现在您只需设置 slider 颜色,其顶部的渐变将使其看起来正确。

我使用这种技术在我的应用程序中创建了这个颜色选择器......

enter image description here

左侧的“ slider ”使用具有色调渐变的单个图像。

右侧的“亮度/饱和度”选择器使用单个图像,从左到右白色透明渐变,从下到上黑色透明渐变。然后我只需要根据色调设置背景颜色。

示例

iOS 中的所有颜色都使用基于 0.0-1.0 的颜色。

因此,您所需要的只是沿每个 View 的距离的百分比。

所以你的职位是 CGPoint并且需要产生一个百分比。

每种颜色都是“3 维的”(4 带有 alpha,但我没有包括它)所以你需要三个百分比。

在简单的色调 View ...

// put this inside the hue view (if you're not using a UISlider
// this works vertically you ay need yours to work horizontally.
- (CGFloat)hueValueForTouchPosition:(CGPoint)touchPoint {
return touchPoint.y / CGRectGetHeight(self.frame);
}

这将根据触摸在 View 中的位置返回正确的色调值。

现在您可以使用它来设置亮度 View 的背景颜色。
// this will change the background color of the brightness view to match the selected hue
CGFloat hue = [self.hueView hueValueForTouchPosition:touchPoint];
self.brightnessView.backgroundColor = [UIColor colorWithHue:hue brightness:1.0 saturation:1.0 alpha:1.0];

现在你只需要对亮度做同样的事情

关于ios - 颜色作为 slider 位置的函数,用于设置颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33954319/

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