如何使OSX上的WebView(或WKWebView)采用Mojave的Dark Mode

5
我在我的Mac应用程序中嵌入了一个WebView。我使用它来显示从Markdown生成的HTML文本。
我试图使它在Mojave中采用Dark Mode(类似于NSTextView的“开箱即用”方式)。
这是否可能,还是我需要手动插入一些CSS内容来特别设置颜色?
假设是后者-是否有人知道如何以通用的方式实现这一点(即让CSS检测客户端浏览器是否需要暗色或亮色)。
谢谢提前...
1个回答

0
当你切换到暗黑模式时,所有标准视图都会切换到暗黑模式,你不需要做任何操作。
话虽如此,WKWebView正在显示“内容”,而“内容”不应该被系统更改,它应该以自己的颜色展示。如果你展示一个网站,系统没有理由改变其颜色。
但是,如果你有一个使用案例,需要根据系统模式更新视图内容颜色,那么我猜你最好的选择是检测暗/亮模式的变化并重新加载CSS样式。
通过重写你的viewDidChangeEffectiveAppearance方法可以实现检测变化。
- (void)    viewDidChangeEffectiveAppearance
{
    [super viewDidChangeEffectiveAppearance] ;
    NSLog(@"New appearance is %@",[self effectiveAppearance].name) ;
}

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接