我是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
有人可以向我解释为什么会这样吗? 预先感谢。
答案 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] )