如何“旋转”一种颜色的色调?

时间:2016-03-30 11:04:15

标签: ios swift colors uicolor

我希望生成与给定UIColor(三元组,类比,补语等)相符的颜色。

我看过很多帖子,例如thisthis以及this。在上一篇文章中,回答者建议去easyrgb.com。 所以我去了那里。我了解到,如果我想生成那些颜色方案,我需要在一定程度上“旋转”色调。例如,对于三重色,我需要将其旋转±120度。

我知道我可以通过拨打getHue(:saturation:brightness:)来获得颜色的色调,但我怎么能“旋转”呢?方法返回的色调不是一个数字吗? 0到1之间的数字?这对我没有意义!

我认为第一篇文章可能有答案,但代码是用python编写的。我只学了一点python,所以我不太清楚这意味着什么:

h = [(h+d) % 1 for d in (-d, d)]           # Rotation by d

从评论中,我看到这条线以某种方式将色调旋转了d度。但我不知道这种语法意味着什么。

有谁能告诉我如何旋转色调,或将上面的代码翻译成swift?

1 个答案:

答案 0 :(得分:5)

色调分量范围为0.0到1.0,对应于色轮中0º到360º的角度(比较Wikipedia: HSL and HSV)。

要将色调分量“旋转”n度,请使用:

let n = 120 // 120 degrees as an example
hue = fmod(hue + CGFloat(n)/360.0, 1.0)

fmod()函数用于规范化结果 添加到0.0到1.0的范围。

补色的色调是

let hueComplement = fmod(hue + 0.5, 1.0)