spritekit中的颜色不匹配

时间:2019-01-10 22:49:17

标签: ios swift sprite-kit

我是Swift的新手,我在SpriteKit中遇到UIColors的问题。 我在这样的枚举中声明了一组颜色:

enum Colors {
static let red = UIColor(red: 231/255, green: 76/255, blue: 60/255, alpha: 1)
}

然后我将一个任意命名为element的SKSpriteNode设置为该颜色,例如:

element.color = Colors.red

如果我现在打印这些值,将是结果:

print(Colors.red)

UIExtendedSRGBColorSpace 0.905882 0.298039 0.235294 1

print(element.color)

UIExtendedSRGBColorSpace 0.905882 0.298039 0.235294 1

显然它们看起来一样,但是如果我这样做:

print(element.color == Colors.red)

它将返回 false

有人可以向我解释为什么会这样吗? 预先感谢。

1 个答案:

答案 0 :(得分:0)

我想我找到了原因:SKSpriteNode具有默认值为P3DisplayColorSpace的颜色。您可以玩:

  enum Colors {
    static let red = UIColor.init(displayP3Red: 231/255, green: 76/255, blue: 60/255, alpha: 1)

}




 element.color = Colors.red
 print(Colors.red)
 print(element.color)
 print (type(of:element.color))
 print (type(of:Colors.red))
 print(Colors.red == Colors.red)
 print(     element.color ==   element.color)
 print (Colors.red == element.color)
 print(     element.color.cgColor.components![0] ==   Colors.red.cgColor.components![0])
 print(     element.color.cgColor.components![0] )
 print(    Colors.red.cgColor.components![0] )