Как сделать прозрачный фон WKWebView в Swift - PullRequest
1 голос
/ 27 января 2020

Мне нужна прозрачная веб-страница в swift, поэтому я попробовал приведенный ниже код в соответствии с этим ответом . Тем не менее, я не получаю прозрачную веб-страницу. ничего не меняется в цвете 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
}
}

Пожалуйста, помогите мне с кодом.

Ответы [ 2 ]

2 голосов
/ 27 января 2020

код для создания прозрачного фона выглядит так, как следует из того, что вы уже добавили.

self.testWebView!.backgroundColor = UIColor.clear

теперь вопрос в том, что вы уже добавили правильный код, почему вы не получаете надежный вывод ..?

Кроме того, если вы попробуете self.testWebView!.alpha с любым значением, это повлияет на все значения WebPages, так как WkWebView - это единое представление, а изменение его альфа также повлияет на компоненты внутри ...

это произошло поскольку страница, которую вы загружаете в WebViewController, имеет некоторый код HTML и CSS, вы делаете свой WebViewController прозрачным, но из-за этого HTML & CSS вы не можете видеть его прозрачность, так как каждый webpage имеет свой собственный фон настройки цвета (которые просто невозможно изменить для каждого webpage)

Надеюсь, вы поймете, и это поможет вам ...:)

0 голосов
/ 27 января 2020

Как я вижу, вы используете раскадровку (@IBOutlet), и вы можете использовать раскадровку для установки WKWebView: enter image description here

И о коде. Этого достаточно для результата. Вы не должны устанавливать снова 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 помогли добавить прозрачность для фона: enter image description here

...