我正在执行以下操作以便hue从以下位置检索UIColor():
let rgbColour = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)
var hue: CGFloat = 0
var saturation: CGFloat = 0
var brightness: CGFloat = 0
var alpha: CGFloat = 0
rgbColour.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: &alpha)
println("\(hue),\(saturation),\(brightness)")
输出:
1.0,1.0,1.0
根据这个链接,我打算获得0.0,1.0,1.0RGB(红色)1.0,0.0,0.0.
难道我做错了什么?
Mar*_*n R 11
首先,红色/绿色/蓝色组件的范围UIColor是0.0 .. 1.0,而不是0.0 .. 255.0,所以你可能想要
let rgbColour = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)
但即便如此,你得到了输出1.0,1.0,1.0,这是正确的.色调分量范围为0.0到1.0,对应于色轮中0°到360°的角度(例如参见HSL和HSV).
因此hue = 0.0,hue = 1.0描述相同的颜色.如果您需要将色调分量标准化为半开区间,
 0.0 <= hue < 1.0那么您可以使用
hue = fmod(hue, 1.0)
以@Martin R 的回答为基础:
如果您想使用 HSB,您需要:
Saturation和Brightness值使用小数所以,比如说 Sketch 告诉你 HSB 中的颜色值是:Hue: 20, Saturation: 72 and Brightness: 96
在 Xcode 中,创建颜色如下:
let myAwesomeColour = UIColor(hue: 20/360, saturation: 0.72, brightness: 0.96, alpha: 1.0)
使用 RGB 还是 HSB 是一个偏好问题。就 Xcode 而言,结果是相同的,它们都转换为UIColor.