[英]What is difference between White Color set from storyboard and UIColor.whiteColor()?
对于UIButton
,我在故事板中将其背景颜色设置为White Color
。 我想切换按钮的属性,具体取决于我按钮的当前backgroundColor
。
func toggleButton(button: UIButton) {
if button.backgroundColor == UIColor.whiteColor() {
button.backgroundColor = UIColor.myDesiredColor()
button.tintColor = UIColor.whiteColor()
}else {
button.backgroundColor = UIColor.whiteColor()
button.tintColor = UIColor.myDesiredColor()
}
}
检查button.backgroundColor == UIColor.whiteColor()
永远不会返回true
,在调试之后,我发现从Storyboard
设置的White Color
值与UIColor.whiteColor()
值不同。
调试结果:
故事板白色 - UIDeviceRGBColorSpace 1 1 1 1
UIColor.whiteColor()
- UIDeviceWhiteColorSpace 1 1
我找到了解决方法,让我的代码按预期工作。
我真正的困惑是:
结果的变化差异不是因为使用的颜色(毕竟它们都是白色),而是在使用的结果颜色空间中:( RGB
和另一个是Device
)
设备颜色
设备颜色意味着人眼所感知的颜色的真实表示。 与设备无关的色彩空间以白色参考点,黑色参考点和特定设备的伽玛值开始。 iOS Quartz将该信息转换为将源颜色空间的颜色转换为输出设备的颜色空间。 设备颜色也是国际色彩联盟定义的标准。
ICC配置文件定义设备支持的色域以及其他设备特征,以便此信息可用于将一个设备的色彩空间精确地转换为另一个设备的色彩空间。
RGB
RGB是三维颜色空间,由构成给定颜色的红色,绿色和蓝色强度的不同值组成。 它是计算机图形学中最常用的色彩空间,因为它直接受到当今大多数彩色显示器的支持。 RGB颜色空间取决于设备和添加剂。
信号被传输到显示器表面上的元素,使它们以各种强度的红色,绿色和蓝色发光(其组合构成所需色调,饱和度和所需颜色的亮度)
↳iOS :颜色和颜色空间
就可见颜色而言,没有区别。 两者都是常规白色。
但从技术上讲,在调试时,它们是两个不同的对象,它们使用的颜色空间不同。 一个是使用RGB颜色空间创建的,所有通道都设置为其最大值。 另一个是用白色空间(灰度)创建的,最大白色。 在两个空格中,最后一个值是alpha值。
白色以下应该满足您的条件,因为它使用RGB色彩空间。
UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
为什么Xcode在故事板和代码中有两种不同的相同颜色值?
这真的不容易回答。 从故事板开始,即使您使用灰度滑块创建白色。 它将其转换为内置的故事板白色,即RGB。 这就是我猜的方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.