匹配AppKit和SpriteKit颜色

时间:2017-09-29 15:57:18

标签: swift macos colors sprite-kit appkit

我正在为macOS构建一个小型实用程序,它将SpriteKit与AppKit结合在一起。具体来说,我使用SKView作为"背景"对于应用程序窗口(主要用于SpriteKit中更容易的特定类型的动画)。我也在更改Window的background属性的颜色以调整标题栏颜色。在绿色和红色之间切换。

我遇到的问题是AppKit和SpriteKit之间的颜色匹配。简而言之,他们并不匹配。正如您在图像中看到的那样,标题栏与SKView略有不同。

enter image description here

经过一段时间的游戏,我发现SKView中的背景颜色位于"设备RGB颜色空间"并且Window的颜色在" sRGB IEC61966-2.1色彩空间中。"我将AppKit颜色更改为设备RGB,颜色仍然不匹配。

我使用常规的旧NSColor初始化程序创建颜色。

我不确定你是否可以改变颜色的颜色空间。 Window和SKView上的backgroundColor属性是只读的。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果我正确地阅读你想要做的是匹配颜色,你不能只做yourAppKit.backgroundColor = yourSKView.backgroundColor之类的事情来设置它们等于

我的第二个问题是你需要它们匹配吗?大多数时候人们都不会注意到,如果他们注意到他们真的不在乎

此处还有一些关于转换RGB to sRGB

的数据

答案 1 :(得分:0)

我猜这是由于NSWindow.StyleMask.fullSizeContentView。设置后,标题栏默认应用模糊。

如果希望颜色相同,请告诉窗口使用透明的标题栏:

window.titlebarAppearsTransparent = true