【问题标题】:How to make transparent background WKWebView in Swift如何在 Swift 中制作透明背景 WKWebView
【发布时间】:2020-01-27 05:42:54
【问题描述】:

我想要一个快速透明的网页,所以我根据this answer尝试了下面的代码。不过,我没有得到一个透明的网页。 webview颜色没有任何变化..我可以知道为什么吗? 我哪里错了?请在下面的代码中帮助我。

总代码:

 import UIKit
 import WebKit
 class WebviewViewController: UIViewController {

@IBOutlet weak var testWebView: WKWebView!

override func viewDidLoad() {
    super.viewDidLoad()


    guard let url = URL(string: "https://developer.apple.com/swift/") else { return }
    let request = URLRequest(url: url)

    testWebView.load(request)
    // Do any additional setup after loading the view.

          self.testWebView = WKWebView()
          self.testWebView!.isOpaque = false
          self.testWebView!.backgroundColor = UIColor.clear
          self.testWebView!.scrollView.backgroundColor = UIColor.clear
}
}

请帮我写代码。

【问题讨论】:

    标签: ios swift wkwebview transparent


    【解决方案1】:

    制作透明背景的代码如下所示。

    self.testWebView!.backgroundColor = UIColor.clear
    

    现在的问题是您已经添加了正确的代码,那么为什么您没有获得可靠的输出..?

    另外,如果你尝试 self.testWebView!.alpha 具有任何值,它将影响所有 WebPages,因为 WkWebView 是单个视图,更改它的 alpha 也会影响其中的组件...

    发生这种情况是因为您在 WebViewController 中加载的页面有一些 HTMLCSS 代码,您使您的 WebViewController 透明,但由于 HTML &CSS 您看不到它的透明度,因为每个 @987654329 @ 有它自己的背景颜色设置(这是不可能为每个 webpage 更改的)

    希望你能理解,它会帮助你...:)

    【讨论】:

    • 是的,你是对的.. 那么我怎样才能获得透明的网页.. ??我们不能用快速代码实现吗?请建议
    • 要实现你必须对每个加载的 url 页面的 HTML 和 CSS 文件进行更改,这是一个非常困难的过程,如果你这样做,那么它会影响你的速度......那就是为什么我会他们这几乎是不可能的...... :(
    【解决方案2】:

    如我所见,您使用故事板 (@IBOutlet),您可以使用故事板设置您的 WKWebView

    关于代码。这对于结果来说已经足够了。您不应该再次设置self.testWebView = WKWebView(),因为您使用情节提要,您可以使用情节提要设置isOpaque。结果:

    class ViewController: UIViewController, WKNavigationDelegate {
    
        @IBOutlet var webView: WKWebView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            webView.navigationDelegate = self
    
            let url = URL(string: "https://developer.apple.com/swift/")!
            webView.load(URLRequest(url: url))
        }
    
        func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
            let js = "(function() { document.body.style.background='transparent'; })();"
            webView.evaluateJavaScript(js) { (_, error) in
                print(error)
            }
        }
    }
    

    evaluateJavaScript 帮助增加了背景的透明度:

    【讨论】:

    • 是的,我正在使用故事板添加 webview,正如你提到的,我有清晰的 webview B.C,仍然没有透明度
    • 我已经更新了代码,实现 transparentbackground
    • 我试过像上面这样:我清除了 webview 的背景颜色,并添加了你的代码..这里 func webView() 正在调用..但没有任何改变..我没有得到透明背景
    • 你是否完成了storyboard中的所有设置(允许执行js代码)并使用相同的url?我只用你的 url 测试了我的代码,并在最后一个屏幕截图中附加了结果。你可能没有完全配置好
    猜你喜欢
    • 2020-01-21
    • 2014-09-01
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 2023-03-23
    • 2022-01-28
    • 2011-06-15
    相关资源
    最近更新 更多