我正在尝试读取在macOS 10.14 Mojave中应用的着色的当前值,并订阅更新。当您处于“黑暗”模式且未选择“石墨色”强调时,颜色将与背景图像一起更新。
我希望能够从NSColor.windowBackgroundColor
中读取它,但是尽管屏幕上的内容发生了变化,但存储的颜色似乎并没有改变。
答案 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:
方法之外的方法(自动为您设置当前外观)时,这是必需的。