从 UIColor 获取色调会产生错误的结果
Getting hue from UIColor yields wrong result
我正在执行以下操作,以便从 UIColor()
中检索 hue
:
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
根据此 link,我打算为 RGB(红色)1.0,0.0,0.0
.
获取 0.0,1.0,1.0
我是不是做错了什么?
首先UIColor
中red/green/blue个分量的取值范围是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 and HSV)。
因此 hue = 0.0
和 hue = 1.0
描述了一种 相同的 颜色。
如果需要将色调分量归一化到半开区间
0.0 <= hue < 1.0
那么你可以用
hue = fmod(hue, 1.0)
以@Martin R 的回答为基础:
如果您想使用 HSB,您需要:
- 将色调值除以 360
Saturation
和 Brightness
值使用小数
例如,Sketch 告诉您 HSB 中的颜色值是:色调:20,饱和度:72 和亮度:96
在Xcode中,创建颜色如下:
let myAwesomeColour = UIColor(hue: 20/360, saturation: 0.72, brightness: 0.96, alpha: 1.0)
使用 RGB 还是 HSB 是一个偏好问题。就 Xcode 而言,结果是相同的,它们都转换为 UIColor
.
我正在执行以下操作,以便从 UIColor()
中检索 hue
:
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
根据此 link,我打算为 RGB(红色)1.0,0.0,0.0
.
0.0,1.0,1.0
我是不是做错了什么?
首先UIColor
中red/green/blue个分量的取值范围是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 and HSV)。
因此 hue = 0.0
和 hue = 1.0
描述了一种 相同的 颜色。
如果需要将色调分量归一化到半开区间
0.0 <= hue < 1.0
那么你可以用
hue = fmod(hue, 1.0)
以@Martin R 的回答为基础:
如果您想使用 HSB,您需要:
- 将色调值除以 360
Saturation
和Brightness
值使用小数
例如,Sketch 告诉您 HSB 中的颜色值是:色调:20,饱和度:72 和亮度:96
在Xcode中,创建颜色如下:
let myAwesomeColour = UIColor(hue: 20/360, saturation: 0.72, brightness: 0.96, alpha: 1.0)
使用 RGB 还是 HSB 是一个偏好问题。就 Xcode 而言,结果是相同的,它们都转换为 UIColor
.