1

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

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

4

1 回答 1

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:(它会自动为您设置当前外观)。

于 2018-09-19T12:50:30.343 回答