我目前正在尝试比较swift中的一些UIColor(特别是SKLabelNode的颜色),除非颜色为灰色或黑色,否则一切正常。请注意我也只使用内置颜色
我尝试将我创建的UIColor与labelNode.color和labelNode.fontColor进行比较(两者都设置相同),但正如我所说,灰色和黑色总是失败。我查看过一些建议使用colour.description等的帖子以及这篇帖子Issue comparing UIColors in Swift
顺便说一下,如果我不比较描述而是比较实际的颜色对象,那么Brown也会失败。
但以前帖子的答案似乎不起作用。这是一个游乐场的例子:
let checkColor = UIColor.black
let label = SKLabelNode(text: "foo")
label.fontColor = UIColor.black
print(label.fontColor?.description == checkColor.description)
let checkColor = UIColor.brown
let label = SKLabelNode(text: "foo")
label.fontColor = UIColor.brown
print(label.fontColor? == checkColor) // this returns 'false' for brown when description isn't used
任何想法?
我找到的唯一方法是将checkColor变量分配给另一个虚拟SKLabelNode,并将2个fontColor属性相互比较。
答案 0 :(得分:2)
如果您尝试记录checkColor,您会看到它的类型为UIExtendedGrayColorSpace,而您的fontColor的类型为UIExtendedSRGBColorSpace。
解决方案是使用RGB颜色初始化checkColor(我试图将checkColor转换为rgb,但没有找到解决方案)。所以这就是我得到的:
let checkColor = UIColor.black
let checkColorRGB = UIColor.init(red: 0, green: 0, blue: 0, alpha: 1)
let label = SKLabelNode(text: "foo")
label.fontColor = UIColor.black
print(label.fontColor == checkColor)
print(label.fontColor == checkColorRGB)
print(label.fontColor!)
print(checkColor)
print(checkColorRGB)
在操场上测试,你会看到第二个打印日志为真