如何将UIExtendedSRGBColorSpace与我的颜色值相匹配
我使用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
属性使用相同的值。
“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)
或者,也可以使用Display 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