Ios WKWebView的透明背景
在我的应用程序中,我希望使WKWebView具有透明的背景,以便后面的视图(图像视图)可以显示为背景图片Ios WKWebView的透明背景,ios,swift,wkwebview,Ios,Swift,Wkwebview,在我的应用程序中,我希望使WKWebView具有透明的背景,以便后面的视图(图像视图)可以显示为背景图片 webView!.opaque = false webView!.backgroundColor = UIColor.clearColor() 上面的代码适用于UIWebView,但如果webView为WKWebView,则会显示白色背景 还尝试在CSS中添加透明背景色。结果相同,仅适用于UIWebView,而不适用于WKWebView。有什么建议吗?还没有使用WKWebV
webView!.opaque = false
webView!.backgroundColor = UIColor.clearColor()
上面的代码适用于UIWebView,但如果webView为WKWebView,则会显示白色背景
还尝试在CSS中添加透明背景色。结果相同,仅适用于UIWebView,而不适用于WKWebView。有什么建议吗?还没有使用WKWebView,但就连UIWebView也曾遇到过这个问题,解决方案是将html内容包装在如下内容中:
<body style="background-color:transparent;"></body>
希望能有所帮助。这个bug在Beta 5中似乎已经修复。下面的代码对我很有用:
[wkWebView setValue:YES forKey:@"drawsTransparentBackground"];
这段代码可能会对您有所帮助。更新为Swift 3+
self.webView = WKWebView()
self.webView.isOpaque = false
self.webView.backgroundColor = UIColor.clear
self.webView.scrollView.backgroundColor = UIColor.clear
我知道这是一个很老的问题。但我今天一直在努力解决这个问题。我不知道是否只有我一个人,但WKWebView中未定义webView.backgroundColor,而webView.不透明是只读的。解决这个问题的唯一方法是将web视图层背景颜色设置为CGColor clear
webview.wantsLayer = true
webView.layer?.backgroundColor = NSColor.clearColor().CGColor
和包含NSView的视图的方式相同
webViewParent.layer?.backgroundColor = NSColor.clearColor().CGColor
这是唯一对我有用的东西,我希望它也能帮助其他人。对于iOS 10+使用Swift:
self.webView = WKWebView()
self.webView!.isOpaque = false
self.webView!.backgroundColor = UIColor.clear
self.webView!.scrollView.backgroundColor = UIColor.clear
如果您正在加载PDF,并且希望背景颜色不同于标准灰色,则似乎有必要等到文档加载完毕,然后清除子视图的背景。使用
WKWebView
而不是PDFView
(iOS 11+)的优点是WKWebView
s具有双击缩放功能和内置的页面计数指示器,并且与iOS的旧版本兼容
应该注意的是,像这样深入研究系统视图并不是一个很好的做法,因为苹果可以随时更改实现,可能会破坏解决方案
以下是我如何在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()
}
}
}
它将删除wkwebView中的白色背景色。我不知道它是否有帮助,但我使用了以下解决方案:
func setBackgroundWhite(subviews: [UIView]) {
for subview in subviews {
subview.backgroundColor = .white
setBackgroundWhite(subviews: subview.subviews)
}
}
这会在子视图中递归调用内部,将背景设置为白色或其他颜色
我在加载PDF文件时使用了这段代码,WKWebView
和iOS 10+
取消选中Interface Builder中的
不透明
复选框WKWebView for macOS with Objective-C
这是macOS中透明WKWebView视图的神奇线条
[webView setValue:[NSNumber numberWithBool: YES] forKey:@"drawsTransparentBackground"];
谢谢,试过了,还放了颜色:透明;在css文件中,也不起作用。背景始终为白色。设置值:是不允许使用圆弧。应使用[NSNumber numberWithBool:YES]。而且,也没有与drawsTransparentBackground兼容的键值编码WKWebView@InnaKamoze谢谢您能提供另一个有效的解决方案吗?如果这些方法不起作用,则表示Web视图属性有问题或存在其他问题。无论如何,ArcThank不支持drawsTransparentBackground和setValue ForKey这样的方法。谢谢,这个方法对我很有效。SetValue作为NSNumber没有问题。。你的例子很好!这会使iOS 13.0上的应用程序崩溃。问题是关于iOS,而不是OSXWKWebView.scrollView.backgroundColor默认情况下已经是清晰的颜色。加载内容后必须设置isOpaque和background才能正常工作,例如在
webView(uWebView:WKWebView,didFinish navigation:WKNavigation!)
@Andreas中,对我来说,它的工作原理是直接在Interface Builder中设置它们,不需要延迟它们。它不适用于iOS 13.0(它同时适用于iOS 13.3)。我需要的正是您所描述的。但不幸的是,您的解决方案无法在iOS 12上运行。我的pdf文档周围仍然有一个50%的灰色边框…你能将pdf背景颜色从白色更改为任何颜色吗?当我尝试此操作时,它会更改所有背景颜色,但PDF仍然为白色。您是说文档中的背景颜色吗?是的。在webview中加载PDF时,PDF文档的背景为白色。有一些应用程序可以改变PDF文档的样式(背景色和字体颜色),我想看看上面的代码是否是一个可行的方法。有什么想法吗@蒂亚戈·阿马拉尔?
[webView setValue:[NSNumber numberWithBool: YES] forKey:@"drawsTransparentBackground"];