WKWebView简单介绍
- 自iOS8开始,苹果推出了新框架WebKit,提供了替换UIWebView的组件WKWebView,一个用来展示网页的组件。WKWebView解决了UIWebView加载速度慢,占用内存多,优化困难等问题,可以说,WKWebView是目前App内部加载网页的最佳选择。
- WKWebView类主要用于展示网页,因此在WKWebView类中提供了用于网页展示以及控制的方法,同时在WKWebView中也支持执行JavaScript代码。
使用方法
准备
在项目的Info.plist文件中,找到APP Transport Security Settings,如果没有需要创建(+),添加Allow Arbitary loads 键值,类型为Boolean,并将它的值设为YES
加载网页
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://m.douban.com/movie/review/1253346"]];
[webView loadRequest:request];
[self.view addSubview:webView];
加载文件
WKWebView除了加载网页的功能外,还可以加载文件
self.webView=[[WKWebView alloc] initWithFrame:self.view.bounds];
NSURL *url=[NSURL fileURLWithPath:@"/Users/cinderella/Downloads/yy.jpg"];
[self.webView loadFileURL:url allowingReadAccessToURL:url];
[self.view addSubview:_webView];
界面返回到app
WKWebView不能直接返回,需要使用其他工具,在例子里我使用导航控制器来返回到app
代理协议
WKNavigationDelegate是WKWebView最常用到的代理协议,以下几个代理方法为常用的
页面开始加载时调用
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(null_unspecified WKNavigation *)navigation;
开始获取到网页内容时调用
- (void)webView:(WKWebView *)webView didCommitNavigation:(null_unspecified WKNavigation *)navigation;
页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation;
文章参考:IOS WKWebView