我正在使用远远超出预期范围的组件值创建 [Graphics] UIColor。即使我的颜色 (100%) 正确,也会出错

I am having [Graphics] UIColor created with component values far outside the expected range. Error even if my colors is (100%) right

我在 SpriteKit 中有一个使用颜色数组创建的按钮:

let buttonColors : [UIColor] = [
        UIColor(red: 202/255.0, green: 71/255.0, blue: 118/255.0, alpha: 1.0),
        UIColor(red: 107/255.0, green: 107/255.0, blue: 175/255.0, alpha: 1.0),
        UIColor(red: 139/255.0, green: 222/255.0, blue: 213/255.0, alpha: 1.0), ]

当我 运行 应用程序时,我在控制台中收到此消息:

[Graphics] UIColor created with component values far outside the expected range. Set a breakpoint on UIColorBreakForOutOfRangeColorComponents to debug. This message will only be logged once.

我正在按照建议设置断点,它在使用我随机选择的(来自数组的)颜色之一进行初始化时停止,但是颜色看起来正确:

关于这个错误有很多问题,似乎所有这些问题都是因为人们使用像 245.0 这样的值而不是 245/255.0 或 0.95。所以认为也许是我的情况,我在某​​个地方错过了 /255 或弄乱了数字,我三次检查所有内容,一切似乎都很好。所以我不相信自己并尝试将我的颜色数组更改为:

let buttonColors : [UIColor] = [
        UIColor.green,
        UIColor.red,
        UIColor.blue,
        UIColor.black,
        UIColor.white,
        UIColor.magenta,
        UIColor.cyan,
        UIColor.yellow
        ]

而且 - 还是一样! 我已经重新启动,删除了应用程序并清理了构建文件夹,一切看起来都一样。有没有想过我应该把注意力放在哪里?谢谢!

不确定这是一个很好的答案,但它确实不适合发表评论,所以...

我抓取了您链接到的“Magnetic”和 运行 Simulator iPhone 7 / 11.3

上的示例应用程序

运行 它完全按原样 - 根本没有代码编辑。 运行 一次,一次,一次,然后...第 5 次我收到 "far outside the expected range" 消息。

因此,我注释掉了他们的 UIColor 扩展名并替换为:

let color = UIColor.colors.randomItem()

与:

let color = UIColor.blue

结果当然是 12 蓝色 "bubbles"。

运行 它,运行 它,运行 它,然后...再次收到 "far outside the expected range" 消息。

所以,我认为这与您的 buttonColors 没有任何关系。我的猜测 - SpriteKit 有一些奇怪的内部错误?我没有用 SpriteKit 做过任何实际工作,所以我没有任何其他代码可以尝试复制它。

Google 除了常见的开发错误(使用 241 而不是 241.0 / 255.0),搜索没有发现任何其他内容。

我也没有在 Magnetic 问题中看到任何提及。

由于它只是一条 "warning" 消息,并且由于您获得了正确的颜色,除非您想就技术支持事件 (TSI) 与 Apple 联系,否则也许就让它过去吧?或者向 Magnetic 的作者提出问题?