在我的 Web 视图中,我使用 CSS 变量在运行时更改各种颜色,具体取决于是否启用了 macOS 10.14 的暗模式。这么多工作正常。棘手的部分是在系统外观发生变化时更新颜色。
我通过观察effectiveAppearance
窗口上的属性来检测变化。该通知按预期发送,但是当我去更新颜色时,NSColor
仍然给我深色模式颜色(或应用程序启动的任何模式)。例如,NSColor.textColor
当我响应从暗模式切换到亮模式时,它仍然是白色而不是黑色。我自己的颜色资产似乎也发生了同样的情况。
我应该以不同的方式或时间获得这些颜色吗?或者这可能是一个操作系统错误?
编辑:如果 Web 视图的有效外观名称发生变化,
我还尝试创建一个子类WebView
并更新我的颜色。drawRect()
第一次,我得到所有浅色,即使应用程序在暗模式下启动也是如此。之后,当我从浅色模式切换到深色时,我会得到系统颜色的深色版本和资产目录颜色的浅色版本。
在调试器之外,切换到暗模式是可行的,但初始加载总是得到浅色。