如何根据RGB光谱的触摸设置UIColors?

时间:2014-01-14 02:22:27

标签: ios iphone colors rgb uicolor

我很有兴趣实现类似于下图所示的UIColor光谱。根据用户在比例尺上的触摸位置,我希望用户能够通过触摸选择所选颜色的线条。

enter image description here

我无法开始实施这个概念。由于RGB颜色以R = 255, G = 0, B = 0开头,但基于两个颜色的值同时发生变化,我不知道如何仅基于{{的增量来对应这些变化1}}基于触摸的坐标。

我的问题是:

  1. 是否有任何基于触摸的颜色选择的开源示例来自我可以使用或部分获得指导的色谱?即使它们不在客观c中,查看y坐标变化如何与y值变化相对应仍然非常有用。

  2. RGB光谱中有哪些重要的片段,颜色会变化,所以如果我试图自己实现光谱颜色选择,我将能够根据这些值开始吗?

  3. 谢谢!

2 个答案:

答案 0 :(得分:3)

我认为你是在思考这个问题。您所要做的就是设置滑块以提供0.0到1.0之间的值,而不是使用RGB创建颜色,而是使用+[UIColor colorWithHue:saturation:brightness:alpha:]。您所要做的就是将滑块值传递给hue参数。

UIColor *color = [UIColor colorWithHue:mySlider.value saturation:1.0 brightness:1.0 alpha:1.0];

答案 1 :(得分:2)

有很多不同的颜色模型。大多数涉及至少3个参数:

HSB, RGB CMYK, LAB,

和其他各种人。

转到http://www.cocoacontrols.com并搜索“颜色选择器”。你会发现很多。大多数涉及指定3种不同的设置:使用RGB,通常使用3个滑块。使用HSB时,您倾向于使用色轮(色调=围绕圆圈的角度,距离中心的距离=饱和度)以及用于亮度的滑块。

HSB(色调,饱和度和亮度)是最容易理解的之一。

如果您想让用户根据单个滑块设置选择颜色,您需要以某种方式定义一系列颜色。您的颜色条看起来像是不同的色调,并将饱和度和亮度值保持在最大值。只需修正饱和度和亮度,让用户选择一种色调。 UIColor包含允许您输入色调,饱和度和亮度值的方法,还有一种方法可以让您查询给定的RGB颜色并获取HSB值。