文章目录
  1. 1. 展示Web网页
  2. 2. 追踪加载过程
  3. 3. 下一步
  4. 4. 参考

WKWebview是WebKit的核心,可以应用于iOS8之后的系统,用于替代UIWebView,相比于UIWebview,WKWebview在性能、稳定性、功能方面有很大提升,因此我们再展示网页时应该优先使用WebView。

展示Web网页

开发中我们常常要在原生APP中展示外部网页(虽然这种方式并不好)。下面我们就实现一个ViewController专门用于展示Web网页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import WebKit

class MoreEnvFlagViewController: UIViewController {

private lazy var webview: WKWebView = WKWebView()


let request = NSURLRequest.init(url: NSURL(string: "https://www.baidu.com/") as! URL)


override func viewDidLoad() {
super.viewDidLoad()

themeNavigationConf()

title = "环保标志"

webview.frame = CGRect(x: 0,
y: 0,
width: SCREEN_WIDTH,
height: SCREEN_HEIGHT)

view.addSubview(webview)
}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
webview.load(request as URLRequest)
}
}

追踪加载过程

WKNavigationDelegate代理提供的一些方法可以用来追踪加载过程(页面开始加载、加载完成、加载失败),下面为上面的页面添加加载提示

1
2
3
4
5
6
7
8
9
10
11
12
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
ShanghaiHUD.progress(message: "加载中")
}

func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
ShanghaiHUD.progressHidden()
ShanghaiHUD.error(message: "加载失败")
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!){
ShanghaiHUD.progressHidden()
}

下一步

这里介绍了WKWebview的基础使用方式,后续会介绍进阶使用包括UIDelegate,app和web交互,js加载…

参考

WKWebView - Apple Document

WKWebView的新特性与使用

自己动手打造基于 WKWebView 的混合开发框架(一)——WKWebView 上手