如何给WKWebView一个彩色背景

问题描述 投票:0回答:5

我正在开发一个应用程序,在其中加载不同的 html 文件,大部分背景都是深色的。现在,从一个页面导航到另一个页面时会出现白色小闪烁,大概是因为下一页尚未加载。我想摆脱那种闪光灯,并认为最直接的方法是为 WebView 提供背景颜色。

我尝试设置 WebView 及其内部的滚动视图的颜色,但这似乎不起作用:

self.webView?.backgroundColor = UIColor.blackColor()
self.webView?.scrollView.backgroundColor = UIColor.blackColor()

第一次加载视图时,我看到颜色闪烁,但在后续导航中看不到。

cocoa-touch uikit wkwebview
5个回答
127
投票

要停止深色背景上的“白色闪光”,请执行以下操作

webView.opaque = false

这并不能真正解决背景颜色问题,但至少可以阻止您遇到的“白色闪光”。 显然,在加载 HTML 之前似乎无法更改 WKWebView 的背景颜色。

斯威夫特4

webView.isOpaque = false

27
投票
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
是可选的,所以也许你没有初始化它。


10
投票

我曾经在一个项目中进行加载请求时隐藏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
}

8
投票

单击 soryboard 中的

WKWebView
,然后从属性检查器面板中选择首选的背景颜色。

然后将

content.isOpaque = false
放在加载
WKWebView
的位置,例如在
viewDidLoad()

@IBOutlet weak var content: WKWebView!
...
content.isOpaque = false

0
投票

macOS 14 中对我有用的功能

let webview = WKWebView()
webview.setValue(false, forKey: "drawsBackground")
© www.soinside.com 2019 - 2024. All rights reserved.