【问题标题】:Matching AppKit and SpriteKit colors匹配 AppKit 和 SpriteKit 颜色
【发布时间】:2018-03-11 14:06:33
【问题描述】:

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

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

玩了一会,发现SKView的背景色在“Device RGB colorspace”,Window的颜色在“sRGB IEC61966-2.1 colorspace”。我将 AppKit 颜色更改为设备 RGB,颜色仍然不匹配。

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

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

有什么想法吗?

【问题讨论】:

  • 听起来很烦人!!我知道 osX 的 SKColor 是 NSColor,iOS 的 SKColor 是 UIColor...也有兴趣了解更多信息!
  • 首先在 UIView 中使用 SpriteKit 场景单独分解所有 R,G,B,A 值,然后用 R 对它们进行数学运算,以此类推

标签: swift macos colors sprite-kit appkit


【解决方案1】:

如果我没看错你想要做的是匹配颜色,你能不能只做类似yourAppKit.backgroundColor = yourSKView.backgroundColor 的事情,应该将它们设置为相等

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

这里还有一些关于转换RGB to sRGB的数据

【讨论】:

  • 是的,它们需要匹配。我想我可以故意将它们分开并使其有目的,这不是我想要的。
  • 你能用一些屏幕截图编辑你的anwser,这样我就可以明白你的意思(shift+cmd+4 截取所选区域的屏幕截图)
【解决方案2】:

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

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

window.titlebarAppearsTransparent = true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    相关资源
    最近更新 更多