作者:一个人灬过世界amp丶_420 | 来源:互联网 | 2023-01-18 10:22
1> rmaddy..:
UIColor getHue:saturation:brightness:
如果颜色的颜色空间是sRGB ,则该方法似乎不起作用,但如果颜色的颜色空间是扩展sRGB ,则该方法可行.
因此,解决方案是为颜色集资产中的每种颜色更新选定的颜色空间.
这可以在Swift Playground中演示如下.这将使用sRGB颜色空间创建颜色.
if let cs = CGColorSpace(name: CGColorSpace.sRGB) {
if let cc = CGColor(colorSpace: cs, components: [0.5, 0.7, 0.3, 1.0]) {
let color = UIColor(cgColor: cc)
print(color)
var h: CGFloat = 0
var s: CGFloat = 0
var b: CGFloat = 0
if color.getHue(&h, saturation: &s, brightness: &b, alpha: nil) {
print(h, s, b)
} else {
print("Failed with color space \(cs)")
}
}
}
这给出了输出:
kCGColorSpaceModelRGB 0.5 0.7 0.3 1
颜色空间失败(kCGColorSpaceICCBased; kCGColorSpaceModelRGB; sRGB IEC61966-2.1)
更新上述代码以使用CGColorSpace.extendedSRGB
颜色空间可得到以下结果:
UIExtendedSRGBColorSpace 0.5 0.7 0.3 1
0.25 0.571428571428571 0.7