我正在开发一个应用程序,在其中加载不同的 html 文件,大部分背景都是深色的。现在,从一个页面导航到另一个页面时会出现白色小闪烁,大概是因为下一页尚未加载。我想摆脱那种闪光灯,并认为最直接的方法是为 WebView 提供背景颜色。
我尝试设置 WebView 及其内部的滚动视图的颜色,但这似乎不起作用:
self.webView?.backgroundColor = UIColor.blackColor()
self.webView?.scrollView.backgroundColor = UIColor.blackColor()
第一次加载视图时,我看到颜色闪烁,但在后续导航中看不到。
要停止深色背景上的“白色闪光”,请执行以下操作
webView.opaque = false
这并不能真正解决背景颜色问题,但至少可以阻止您遇到的“白色闪光”。 显然,在加载 HTML 之前似乎无法更改 WKWebView 的背景颜色。
斯威夫特4
webView.isOpaque = false
self.webView = WKWebView()
self.webView.backgroundColor = UIColor(red:0.11, green:0.13, blue:0.19, alpha:1)
self.webView.scrollView.backgroundColor = UIColor(red:0.11, green:0.13, blue:0.19, alpha:1)
不要忘记你的
WKWebView
是可选的,所以也许你没有初始化它。
我曾经在一个项目中进行加载请求时隐藏WKWebView。
webView.isHidden = true
webView.load(req)
加载完成后,我再次将 webView 设置为可见。
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.isHidden = false
}
func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
activityIndicator.stopAnimating()
webView.isHidden = false
}
单击 soryboard 中的
WKWebView
,然后从属性检查器面板中选择首选的背景颜色。
然后将
content.isOpaque = false
放在加载 WKWebView
的位置,例如在 viewDidLoad()
中
@IBOutlet weak var content: WKWebView!
...
content.isOpaque = false
macOS 14 中对我有用的功能
let webview = WKWebView()
webview.setValue(false, forKey: "drawsBackground")