如何在OSX上获取WebView(或WKWebView)以在Mojave中采用暗模式

Sco*_*tty 5 macos cocoa webkit macos-mojave

我的Mac应用程序中有一个嵌入式WebView。我用它来显示HTML文本(从Markdown生成)。

我正在尝试使其在Mojave中采用黑暗模式(类似于NSTextView的“开箱即用”方式。)

这是否可能-还是我需要手动将一些CSS素材插入HTML以专门设置颜色?

假设是后者-是否有人知道如何以通用方式执行此操作(即,基于客户端浏览器获取CSS来检测它是否需要暗或亮)。

提前致谢...

Air*_*ène 0

当您切换到深色模式时,所有标准视图都会切换到深色模式,您无需执行任何操作。

这就是说,WKWebView正在显示“内容”,并且“内容”不应该被系统更改,“内容”应该以自己的颜色显示自己。如果您显示一个网站,系统没有理由改变颜色。

但如果您有一个用例,将视图内容颜色更新为系统模式是有意义的,那么我想您最好的选择是检测对暗/亮模式的更改并重新加载 CSS 样式。

可以通过重写视图 viewDidChangeEffectiveAppearance 方法来检测更改。

- (void)    viewDidChangeEffectiveAppearance
{
    [super viewDidChangeEffectiveAppearance] ;
    NSLog(@"New appearance is %@",[self effectiveAppearance].name) ;
}
Run Code Online (Sandbox Code Playgroud)

根据外观名称(NSAppearanceNameVibrantDarkNSAppearanceNameVibrantLight),您可以加载 CSS 或其他 CSS。