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
本文深入探讨了自iOS8起引入的WKWebView组件,详细对比了其与UIWebView的优劣,介绍了如何在项目中配置并使用WKWebView加载网页及本地文件,以及如何通过代理协议监控网页加载状态。
1839

被折叠的 条评论
为什么被折叠?



