在macOS 10.14 Mojave中获取桌面着色的最新色调

时间:2018-08-10 09:14:05

标签: macos colors custom-controls nscolor macos-mojave

我正在尝试读取在macOS 10.14 Mojave中应用的着色的当前值,并订阅更新。当您处于“黑暗”模式且未选择“石墨色”强调时,颜色将与背景图像一起更新。

我希望能够从NSColor.windowBackgroundColor中读取它,但是尽管屏幕上的内容发生了变化,但存储的颜色似乎并没有改变。

1 个答案:

答案 0 :(得分:0)

如果您的意思是应用于窗口背景的窗口后色调,则似乎没有办法,因为它取决于位置:将窗口拖到浅色和深色背景上,看看如何当您移动窗口时会发光。实际颜色由窗口合成系统计算。

由于您引用的是“存储的颜色”,因此如果您指的是CGColor并注意到从亮模式切换为暗模式时反之亦然,那么您可能需要首先明确设置外观:

let saved = NSAppearance.current()
NSAppearance.setCurrent(someView.effectiveAppearance)

// Here you can access the "true" colors (minus vibrancy/compositing effects):
let cgColor = NSColor.windowBackgroundColor.cgColor

NSAppearance.setCurrent(saved)

在使用drawRect:方法之外的方法(自动为您设置当前外观)时,这是必需的。