仅比较黑色和灰色的 UIColor 不正确
Comparing UIColor incorrect only for black and gray
我目前正在尝试比较 swift 中的一些 UIColor(特别是 SKLabelNode 的颜色)并且一切正常,除非颜色是灰色或黑色。请注意我也只使用内置颜色
我尝试将我创建的 UIColor 与 labelNode.color 和 labelNode.fontColor(两者设置相同)进行比较,但正如我所说,灰色和黑色总是失败。我看过许多建议使用 colour.description 等的 posts,还有这个 post
顺便说一句,如果我不比较描述而是比较实际的颜色对象,那么棕色也会失败。
但之前 post 的答案似乎不起作用。这是一个游乐场示例:
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 属性相互比较。
如果您尝试记录您的 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)
在操场上测试,你会看到第二个打印日志为真
我目前正在尝试比较 swift 中的一些 UIColor(特别是 SKLabelNode 的颜色)并且一切正常,除非颜色是灰色或黑色。请注意我也只使用内置颜色
我尝试将我创建的 UIColor 与 labelNode.color 和 labelNode.fontColor(两者设置相同)进行比较,但正如我所说,灰色和黑色总是失败。我看过许多建议使用 colour.description 等的 posts,还有这个 post
顺便说一句,如果我不比较描述而是比较实际的颜色对象,那么棕色也会失败。
但之前 post 的答案似乎不起作用。这是一个游乐场示例:
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 属性相互比较。
如果您尝试记录您的 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)
在操场上测试,你会看到第二个打印日志为真