macos - 如何让 OSX 上的 WebView(或 WKWebView)在 Mojave 中采用暗模式
问题描述
我的 Mac 应用程序中有一个嵌入式 WebView。我用它来显示 HTML 文本(从 Markdown 生成。)
我试图让它在 Mojave 中采用暗模式(类似于 NSTextView 的“开箱即用”方式。)
这可能吗 - 还是我需要手动将一些 CSS 内容插入 HTML 以专门设置颜色?
假设是后者 - 有谁知道如何以通用方式执行此操作(即让 CSS 检测它是否需要根据客户端浏览器变暗或变亮。)
提前致谢...
解决方案
当您切换到暗模式时,所有标准视图都会切换到暗模式,您无需执行任何操作。
这就是说,WKWebView 正在显示“内容”,“内容”不应该被系统更改,“内容”应该以自己的颜色显示自己。如果您显示一个网站,则系统没有理由更改颜色。
但是,如果您有一个用例将视图内容颜色更新为系统模式是有意义的,那么我想您最好的选择是检测到暗/亮模式的更改并重新加载 CSS 样式。
可以通过覆盖视图 viewDidChangeEffectiveAppearance 方法来检测更改。
- (void) viewDidChangeEffectiveAppearance
{
[super viewDidChangeEffectiveAppearance] ;
NSLog(@"New appearance is %@",[self effectiveAppearance].name) ;
}
根据外观名称 (NSAppearanceNameVibrantDark
或NSAppearanceNameVibrantLight
),您可以加载 CSS 或其他。
推荐阅读
- r - 将数据框列中的值替换为键值查找中的值
- javascript - findOne 没有达到我知道的价值
- php - 在 Wordpress 上 http 上传图片时出错
- mysql - 存储过程mysql在我执行时返回null
- android - 如何在 Android 中显示 BluetoothDevicePicker?
- iframe - 维基百科的样式?printable=yes 文章
- javascript - 在父母之前反应孩子道具渲染?
- xero-api - Xero API > 发票 > PUT > 跟踪类别
- java - 如何将日期序列化为 HashMap?
- google-sheets - 从一张纸复制到另一张纸并复制到下一行