Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios WKWebView的透明背景_Ios_Swift_Wkwebview - Fatal编程技术网

Ios WKWebView的透明背景

Ios WKWebView的透明背景,ios,swift,wkwebview,Ios,Swift,Wkwebview,在我的应用程序中,我希望使WKWebView具有透明的背景,以便后面的视图(图像视图)可以显示为背景图片 webView!.opaque = false webView!.backgroundColor = UIColor.clearColor() 上面的代码适用于UIWebView,但如果webView为WKWebView,则会显示白色背景 还尝试在CSS中添加透明背景色。结果相同,仅适用于UIWebView,而不适用于WKWebView。有什么建议吗?还没有使用WKWebV

在我的应用程序中,我希望使WKWebView具有透明的背景,以便后面的视图(图像视图)可以显示为背景图片

    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"];