我使用XCode可视化编辑器设置UIButton
的颜色。我使用RGB滑块设置它。
然后我设置变量green
:
let green = UIColor(red: 0, green: 210/255, blue: 0, alpha: 1)
当我打印出green
值和UIButton.backgroundColor
时,我会相应地得到下一个值:
UIExtendedSRGBColorSpace -0.146119 0.836984 -0.0130851 1
UIExtendedSRGBColorSpace 0 0.823529 0 1
所以,正如我猜的那样,颜色空间是相等的,但值不是。为什么会这样? Apple的UIButton()做了一些隐藏的转换?什么目的?是否可以为此按钮属性和green
属性设置相同的值。
答案 0 :(得分:5)
“RGB Sliders”弹出式菜单旁边有一个按钮 允许您选择颜色空间:
在你的情况下,它被设置为“显示P3”,一个颜色空间 比sRGB色彩空间“更大”并允许显示更多 具有P3显示的较新设备上的颜色。表示这种颜色 在“扩展的sRGB色彩空间”中,组件不是 限制在0.0到1.0的范围内(参见UIColor中的“颜色和颜色空间”) 欲获得更多信息)。在你的情况下
UIExtendedSRGBColorSpace -0.416964 0.838774 -0.249501 1
具有负红色和蓝色分量,即色域外的颜色 sRGB。
如果将颜色选择器中的颜色空间设置为“sRGB”,则0/210/0的结果将为
UIExtendedSRGBColorSpace 0 0.823529 0 1
与
相同let green = UIColor(red: 0, green: 210/255, blue: 0, alpha: 1)
或者,以编程方式使用“显示P3”颜色空间 创造了颜色:
print(label.backgroundColor!)
// UIExtendedSRGBColorSpace -0.416964 0.838774 -0.249501 1
let green = UIColor(displayP3Red: 0, green: 210/255, blue: 0, alpha: 1)
print(green)
// UIDisplayP3ColorSpace 0 0.823529 0 1
print(UIColor(cgColor: green.cgColor))
// UIExtendedSRGBColorSpace -0.416964 0.838774 -0.249501 1
print(label.backgroundColor! == green)
// true