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

时间:2018-08-28 15:26:59

标签: macos cocoa webkit macos-mojave

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

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

这是可能的吗?还是我需要在HTML中手动插入一些CSS内容以专门设置颜色?

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

预先感谢...

1 个答案:

答案 0 :(得分:1)

当您切换为暗模式时,所有标准视图都将切换为暗模式,而您无需执行任何操作。

这表示WKWebView显示“内容”,并且系统不应更改“内容”,“内容”应以自己的颜色显示。如果您显示一个网站,则系统没有理由更改颜色。

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

可以通过覆盖您的viewDidChangeEffectiveAppearance方法来检测更改。

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

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