WKWebView是在iOS8之后推出的,意在取代原本的UIWebView。相比于UIWebView,WKWebView的一个显著特点就是占用的系统内存大幅降低,大部分情况不会出现UIWebView峰值内存占用超高的问题。其主要特点有以下几个
- 更多地支持HTML5的特性
- 高达60帧的滚动刷新率
- 使用JavaScript引擎,性能更好,可以实现更多功能
- 简单使用
- 初始化上与原先的UIWebView没有较大的区别,简单创建NSUrlRequest就可以使用WKWebView加载。(WKWebView是在WebKit框架中的)
- 其他的三个加载函数:
-(WKNavigation *)loadRequest:(NSURLRequest *)request;
-(WKNavigation *)loadHTMLString:(NSString *)string baseURL:(nullable NSURL *)baseURL;
-(WKNavigation *)loadData:(NSData *)data MIMEType:(NSString *)MIMEType characterEncodingName:(NSString *)characterEncodingName baseURL:(NSURL *)baseURL
- 一些常用的属性
allowsBackForwardNavigationGestures:BOOL类型,是否允许左右划手势导航,默认不允许
estimatedProgress:加载进度,取值范围0~1
title:页面title
.scrollView.scrollEnabled:是否允许上下滚动,默认允许
backForwardList:WKBackForwardList类型,访问历史列表,可以通过前进后退按钮访问,或者通过goToBackForwardListItem函数跳到指定页面
- 代理
- 共有三个代理协议:WKNavigationDelegate|WKUIDelegate|WKScriptMessageHandler
- 其中WKNavigationDelegate是与加载过程相关,WKUIDelegate与UI相关,即弹窗之类的控件,WKScriptMessageHandler必须实现,用来app与js交互
2.注意事项
- 如果加载的链接是http的需要在plist文件中添加App Transport Security Settings字段并在其中添加Allow Arbitrary Loads,设置键值为YES
- 不要直接使用如www.bing.com这类的地址,会加载不出来
- 注意内存泄漏的问题,添加的代理使用完需要移除