我UIButton使用XCode可视编辑器设置颜色。我使用RGB滑块进行设置。
UIButton
然后我设置变量green:
green
let green = UIColor(red: 0, green: 210/255, blue: 0, alpha: 1)
当我打印出green值并UIButton.backgroundColor得到相应的下一个值时:
UIButton.backgroundColor
UIExtendedSRGBColorSpace -0.146119 0.836984 -0.0130851 1 UIExtendedSRGBColorSpace 0 0.823529 0 1
因此,我猜想,颜色空间相等,但值却不相等。为什么会这样呢?苹果的UIButton()会进行一些隐藏的转换吗?什么目的?此按钮属性和green属性是否可以具有相同的值。
在“ RGB滑块”弹出菜单旁边,有一个按钮,可让您选择颜色空间:
在您的情况下,将其设置为“显示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
并且与
另外,也可以将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