1、更简洁、更方便、不会与自定义的UINavigationBar产生冲突
2、WKWebView取代UIWebView,更轻量,不会因为缓存问题而占耗内存;
最主要的是独有的网页进度属性可省去很多事。
我的思路是这样的:
1、UIProgressView利用WKWebView的特有属性@“estimatedProgress”来监听进度变化,达到微信转webview的效果。
2、利用WKWebView的canGoBack属性:
2.1 在WKWebView的代理属性里面判断当前页面是否可以返回。
-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{};
在写这个代理之前,首先定义3个UIBarButtonItem。
-(void)back{
[self.navigationController popViewControllerAnimated:YES];
}
-(void)goback{
[self.webView goBack];
}
-(void)dismiss{
[self.navigationController popViewControllerAnimated:YES];
}
当self.webView.canGoBack的时候将LeftBarButtonItem设置为back。
反之则为leftBarButtonItems = @[@"goback",@"dismiss"];
只是在代理里面更新leftBarButtonItem是不行的。
在WKWebView里面使用这个方法:
-(void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
}
利用webView.backForwardList.backList.count来判断是否已经在首页了。这个时候更新下LeftBarButtonItem的属性。
最后特别感谢RxWebViewController的作者,能前辈的代码里获取到了灵感。
最后附上Demo地址。











网友评论