macOS WKWebView 背景透明化

5
如果有人对 WKWebView 有经验,请分享如何使视图的背景透明。 通过 var drawsBackground: Bool { get set }WebView 对象具有此选项,但是 WKWebView 类缺少此选项。 我在网上搜索了一下,但没有找到什么有用的信息。 以前可以通过 opaque 属性来完成,但现在不再支持。 只有一个 getter isOpaque ... 就是这样。 我不想通过 CSS 来做,已经尝试了其他所有方法,例如:

webview.wantsLayer = true

webview.layer?.backgroundColor = NSColor.clear.cgColor

如果有人能帮忙就好了...
I. Nikolov

可能是透明背景WKWebView(NSView)的重复问题。 - l'L'l
不是重复的。我已经尝试了那里写的所有方法 - 它们现在都不起作用了。而且我已经在问题中描述了这个情况。 - Ivaylo Nikolov
请不要在问题中包含答案。如果有答案解决了您的问题,请将答案标记为已接受;如果您认为自己的答案对其他用户有帮助,也可以发布自己的答案。谢谢。 - Eric Aya
2个回答

12

这应该适用于 macOS 10.11 和 macOS 10.12:

if NSAppKitVersion.current.rawValue > 1500 {
    webView.setValue(false, forKey: "drawsBackground")
}
else {
    webView.setValue(true, forKey: "drawsTransparentBackground")
}

备注:此已通过App Store审核。


让我试试。它会通过审核吗?有这方面的经验吗? - Ivaylo Nikolov
好的。它正在工作。我不确定这是否能通过审核,但我会尝试并将您的答案标记为正确。谢谢您的帮助;-) - Ivaylo Nikolov
我已经提交了一份关于此事的反馈助手报告:https://github.com/feedback-assistant/reports/issues/81 如果您也希望看到官方支持,请复制此报告。 - Sindre Sorhus
从iOS14开始,drawsTransparentBackground已被弃用,不应再使用(尽管没有真正的替代方案)。 - Lerk

0

你的网页应该也要有透明背景。


如果我调用 webview.setValue(true, forKey: "drawsTransparentBackground"),它会变成透明的,但是控制台上会有一条消息: [WKWebView _setDrawsTransparentBackground:] 已经被废弃,不应该再使用。问题不在于网页不透明。 - Ivaylo Nikolov
@IvayloNikolov:这是在macOS 10.11中的正确方法。在macOS 10.12中的弃用应该是你问题的真正问题所在。 - Ely
是的 - 没错。你说得对。还是找不到答案。 - Ivaylo Nikolov

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