WKWebView的透明背景

Lim*_*ean 36 ios swift wkwebview

在我的应用程序中,我希望使用透明背景制作WKWebView,因此后面的视图(一个ImageView)可以显示为背景图片.

    webView!.opaque = false
    webView!.backgroundColor = UIColor.clearColor()
Run Code Online (Sandbox Code Playgroud)

上面的代码适用于UIWebView,但如果webView是WKWebView,则会显示白色背景.

还尝试在CSS中放置透明背景颜色.结果是一样的,只适用于UIWebView但不适用于WKWebView.有什么建议吗?

rob*_*pim 45

对于使用Swift的iOS 10+:

self.webView = WKWebView()
self.webView!.isOpaque = false
self.webView!.backgroundColor = UIColor.clear
self.webView!.scrollView.backgroundColor = UIColor.clear
Run Code Online (Sandbox Code Playgroud)

  • isOpaque 和 background 必须在内容加载后设置才能工作,例如在`webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)` 中。 (4认同)
  • 默认情况下,WKWebView.scrollView.backgroundColor已经是透明色。 (2认同)

Bil*_*fas 20

此代码可能对您有所帮助.针对Swift 3+进行了更新

self.webView = WKWebView()
self.webView.isOpaque = false
self.webView.backgroundColor = UIColor.clear
self.webView.scrollView.backgroundColor = UIColor.clear
Run Code Online (Sandbox Code Playgroud)


小智 8

using objective c.
wkWebView.backgroundColor = [UIColor clearColor];
wkWebView.scrollView.backgroundColor = [UIColor clearColor];
wkWebView.opaque = false;
Run Code Online (Sandbox Code Playgroud)

它将删除 wkwebView 中的白色背景色。


小智 7

适用于 macOS 的 WKWebView,带有 Objective-C

这是 macOS 中透明 WKWebView 视图的魔力线。

[webView setValue:[NSNumber numberWithBool: YES] forKey:@"drawsTransparentBackground"];
Run Code Online (Sandbox Code Playgroud)


Nik*_*Nik 6

在此输入图像描述

Uncheck Opaque checkbox in Interface Builder

Update July 2021, Xcode 13

Looks like the checkbox is still there

在此输入图像描述


msz*_*aro 5

这个错误似乎在Beta 5中得到修复.


bed*_*ton 5

我知道这是一个非常古老的问题。但今天我一直在为此苦苦挣扎。我不知道是不是只有我一个人这样,WKWebView中webView.backgroundColor是未定义的,webView.opaque是只读的。我解决这个问题的唯一方法是将 Web 视图图层背景颜色设置为 CGColor 清晰

webview.wantsLayer = true
webView.layer?.backgroundColor = NSColor.clearColor().CGColor
Run Code Online (Sandbox Code Playgroud)

和包含 NSView 的方式相同

webViewParent.layer?.backgroundColor = NSColor.clearColor().CGColor
Run Code Online (Sandbox Code Playgroud)

这是唯一对我有用的东西,我希望它也能对其他人有所帮助。


bab*_*ibo 1

还没有使用过 WKWebView,但即使 UIWebView 也曾经遇到过这个问题,解决方案是将 html 内容包装在如下内容中:

<body style="background-color:transparent;"></body>
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。