加载Webview时显示图像

时间:2019-04-15 19:20:09

标签: ios swift wkwebview

我正在尝试在加载WKWebView时显示图像(徽标)。

因此,查看其他帖子,我将在ViewDidLoad()中的屏幕上放置图像,并在didFinish方法中隐藏该图像。但是,由于某种原因,didFinish方法无法正常工作。它不会完成打印(尽管Webview确实显示在屏幕上)。为此,我也已经查看了其他帖子。但是,这些主要建议设置WKWebView的委托(我这样做了)。这是我的代码:

import UIKit
import Foundation
import WebKit

class ViewController: UIViewController, WKUIDelegate {

    var webView: WKWebView!

    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.


        let myURL = URL(string:"https://www.mijnmedicijn.nl/")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }

    func webView(_ webView: WKWebView,
                          didFinish navigation: WKNavigation!){
        print("Webview did finish load")

    }

    func webView(_ webView: WKWebView,
                 didStart navigation: WKNavigation!){
        print("Webview did start laoding")

    }
}

我在做什么错?为什么didFinish不起作用?加载时如何使它工作并显示图像?

2 个答案:

答案 0 :(得分:1)

您需要添加导航的代表

webView.navigationDelegate = self

class ViewController: UIViewController , WKUIDelegate , WKNavigationDelegate {

答案 1 :(得分:0)

首先,optional func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)是在WKNavigationDelegate中声明的方法,因此您的类必须符合协议WKNavigationDelegate,并且代码必须类似于webView.navigationDelegate = self

第二,对于您在评论中的另一个问题:“为什么在我的手机上已加载Web视图后,它会在几秒钟后打印该语句?”

当Webview大型机导航完成(即WKWebView完全完成整个页面的加载)时,将调用optional func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)

显示/隐藏加载图像的理想实现是

  1. 符合WKNavigationDelegate。
  2. 执行optional func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!)并编写代码以显示此函数中的加载图像。一旦WKWebView启动大型机导航,就会调用此函数。
  3. 执行optional func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!)并编写代码以隐藏此函数中的加载图像。一旦内容开始到达WKWebView,就会立即调用此函数。
  4. 还实现optional func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error)并编写代码以隐藏此函数中的加载图像。此功能应在URL加载失败的情况下实施。