我正在为macOS构建一个小的实用程序,它结合了SpriteKit和AppKit。具体地说,我使用SKView作为应用程序窗口的“背景”(主要用于在SpriteKit中更容易的特定类型的动画)。我还更改了窗口背景属性的颜色,以调整标题栏的颜色。在绿色和红色之间切换。
我遇到的问题是AppKit和SpriteKit之间的颜色匹配。简而言之,它们不匹配。正如您在图像中看到的,标题栏与SKView略有不同。

在玩了一会儿之后,我发现SKView中的背景色是"Device RGB colorspace“,而窗口的颜色是"sRGB IEC61966-2.1 colorspace”。我将AppKit的颜色改为设备RGB,但颜色仍然不匹配。
我用一个普通的旧NSColor初始化器创建颜色。
我不确定你是否能改变一种颜色的颜色空间。窗口和SKView上的backgroundColor属性是只读的。
有什么想法吗?
发布于 2017-10-07 17:04:47
如果我没看错的话,你想要做的就是匹配颜色,难道你不能像yourAppKit.backgroundColor = yourSKView.backgroundColor那样把它们设置为相等吗?
我的第二个问题是,你需要它们匹配吗?大多数时候,人们不会注意到,即使他们注意到了,他们也不会真正关心
这里还有一些关于转换RGB to sRGB的数据
发布于 2021-05-03 00:10:23
我猜这要归功于NSWindow.StyleMask.fullSizeContentView。设置此选项后,默认情况下标题栏将应用模糊效果。
如果希望颜色相同,请告诉窗口使用透明标题栏:
window.titlebarAppearsTransparent = truehttps://stackoverflow.com/questions/46492703
复制相似问题