在我的应用程序中,我希望使用透明背景制作WKWebView,因此后面的视图(一个ImageView)可以显示为背景图片。
webView!.opaque = false
webView!.backgroundColor = UIColor.clearColor()
上面的代码适用于UIWebView,但如果webView是WKWebView,则会显示白色背景。
还尝试在CSS中添加透明背景颜色。结果是相同的,只适用于UIWebView但不适用于WKWebView。有什么建议吗?
答案 0 :(得分:36)
对于使用Swift的iOS 10+:
| parse tostring(dayofweek(timestamp)) with dayOfWeek:int ".00:00:00"
答案 1 :(得分:15)
此代码可能对您有所帮助。更新了Swift 3 +
self.webView = WKWebView()
self.webView.isOpaque = false
self.webView.backgroundColor = UIColor.clear
self.webView.scrollView.backgroundColor = UIColor.clear
答案 2 :(得分:5)
此错误似乎已在Beta 5中修复。
答案 3 :(得分:3)
以下代码对我有用:
[wkWebView setValue:YES forKey:@"drawsTransparentBackground"];
答案 4 :(得分:1)
如果您要加载PDF并希望背景颜色与标准灰色不同,则似乎需要等到文档加载完毕,然后清除子视图的背景。使用WKWebView
优于PDFView
(iOS 11+)的优势在于WKWebView
具有双击缩放功能和内置页数指示符,并且与旧版本兼容iOS版
应该注意的是,挖掘这样的系统视图并不是一个很好的做法,因为Apple可以随时改变实施,可能会破坏解决方案。
以下是我在Swift 4中使用黑色背景实现PDF预览控制器的方法:
class SomeViewController: UIViewController {
var observer: NSKeyValueObservation?
var url: URL
init(url: URL) {
self.url = url
super.init(nibName: nil, bundle: nil)
}
func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.black
let webView = WKWebView()
webView.translatesAutoResizingMaskIntoConstraints = false
self.view.addSubview(webView)
NSLayoutConstraint.activate([
webView.topAnchor.constraint(equalTo: self.view.topAnchor),
webView.leftAnchor.constraint(equalTo: self.view.leftAnchor),
webView.rightAnchor.constraint(equalTo: self.view.rightAnchor),
webView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
])
self.observer = webView.observe(\.isLoading, changeHandler: { (webView, change) in
webView.clearBackgrounds()
})
webView.loadFileURL(self.url, allowingReadAccessTo: self.url)
}
}
extension UIView {
func clearBackgrounds() {
self.backgroundColor = UIColor.clear
for subview in self.subviews {
subview.clearBackgrounds()
}
}
}
答案 5 :(得分:1)
答案 6 :(得分:0)
还没有使用WKWebView,但即便是UIWebView也有这个问题,解决方法是将html内容包装在这样的内容中:
<body style="background-color:transparent;"></body>
希望它有所帮助。
答案 7 :(得分:0)
我知道这是一个非常古老的问题。但我今天一直在努力解决这个问题。我不知道它是否仅仅是我,但是在WKWebView中未定义webView.backgroundColor,并且webView.opaque是只读的。我解决这个问题的唯一方法是将Web视图图层背景颜色设置为CGColor clear
webview.wantsLayer = true
webView.layer?.backgroundColor = NSColor.clearColor().CGColor
和包含NSView的方式相同
webViewParent.layer?.backgroundColor = NSColor.clearColor().CGColor
这是唯一对我有用的东西,我希望它也可以帮助别人。
答案 8 :(得分:0)
using objective c.
wkWebView.backgroundColor = [UIColor clearColor];
wkWebView.scrollView.backgroundColor = [UIColor clearColor];
wkWebView.opaque = false;
它将删除wkwebView中的白色背景颜色。
答案 9 :(得分:0)
我不知道它是否可以帮助您,但我在下面使用了此解决方案:
func setBackgroundWhite(subviews: [UIView]) {
for subview in subviews {
subview.backgroundColor = .white
setBackgroundWhite(subviews: subview.subviews)
}
}
这会在子视图中进行内部递归调用,将背景设置为白色或其他颜色。
我在加载PDF文件,WKWebView
和iOS 10+时使用了此代码
答案 10 :(得分:0)
WKWebView for macOS with Objective-C
这是 macOS 中透明 WKWebView 视图的魔法线。
[webView setValue:[NSNumber numberWithBool: YES] forKey:@"drawsTransparentBackground"];