WKWebView简单的笔记
1 WKWebView新特性
- 在性能、稳定性、功能方面有很大提升(最直观的体现就是加载网页是占用的内存,模拟器加载百度与开源中国网站时,WKWebView占用23M,而UIWebView占用53M);
- 允许JavaScript的Nitro库加载并使用
- 支持了更多的HTML5特性;
- 高达60fps的滚动刷新率以及内置手势;
- 将UIWebViewDelegate与UIWebView重构成了14类与3个协议 (查看苹果官方文档)
2 初始化
###2.1 首先引入需要引入WebKit库 #import <WebKit/WebKit.h> ###2.2 初始化方法分为以下两种 // 默认初始化 - (instancetype)initWithFrame:(CGRect)frame;
// 根据对webview的相关配置,进行初始化
- (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration *)configuration NS_DESIGNATED_INITIALIZER; ###2.3 加载网页
self.webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
self.webView.navigationDelegate = self ;
[self.view addSubview:self.webView];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];
3 WKWebView的代理方法
### 3.1 WKNavigationDelegate 该代理提供的方法,可以用来追踪加载过程(页面开始加载、加载完成、加载失败)、决定是否执行跳转。
3.1.1 页面开始加载时调用
// @abstract Invoked when a main frame navigation starts.
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation;
3.1.2 当内容开始返回时调用
//@abstract Invoked when content starts arriving for the main frame.
// @abstract Invoked when content starts arriving for the main frame.
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation;
3.1.3 页面加载完成之后调用
// @abstract Invoked when a main frame navigation completes.
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation;
3.1.4 页面加载失败时调用
// @abstract Invoked when an error occurs during a committed main frame
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation;