通过所有RGB颜色渐变

时间:2015-03-12 08:05:25

标签: ios swift gradient uicolor

我试图通过所有rgb颜色组合及其补充创建流畅的颜色过渡,到目前为止我的尝试是:

var count = x   // this is the index of the current color

var red   = CGFloat((count >> 16) & 0xFF)/255.0;
var green = CGFloat((count >> 8) & 0xFF)/255.0;
var blue  = CGFloat((count) & 0xFF)/255.0;

var color = UIColor(red: red, green: green, blue: blue, alpha: 1.0)
var complement = UIColor(red: 1.0-red, green: 1.0-green, blue: 1.0-blue, alpha: 1.0)

这种方法的问题在于,在每255种颜色之后,几乎会有一个切割中断。所有黑色屏幕作为下一个红色索引增加一个其他所有从0开始。

我的愿望是在没有任何跳跃的情况下经历所有颜色。这有可能吗? (颜色的顺序并不重要 - 例如,如果我们从红色或蓝色或绿色,黑色或白色开始无关紧要。)

1 个答案:

答案 0 :(得分:0)

也许不是您要求的答案,因为它不是基于RGB值 - 但如果您想要浏览所有颜色,为什么不使用HSB?

红色:

UIColor(hue: 0.0, saturation: 1.0, brightness: 1.0, alpha: 1.0)

青色:

UIColor(hue: 0.5, saturation: 1.0, brightness: 1.0, alpha: 1.0)

再次红色:

UIColor(hue: 1.0, saturation: 1.0, brightness: 1.0, alpha: 1.0)

<强>更新: 这是一个例子,如何获得给定色调值的补色。

var hueValue: CGFloat = 0.75 // change this value (min 0.0, max 1.0)
var complementaryHueValue: CGFloat = (hueValue + 0.5) % 1.0 // you could also write (1.0 - hueValue)

UIColor(hue: hueValue, saturation: 1.0, brightness: 1.0, alpha: 1.0)
UIColor(hue: complementaryHueValue, saturation: 1.0, brightness: 1.0, alpha: 1.0)