iOS开发iOS Developer

更简易高效的代码取代RxWebViewController

2017-03-16  本文已影响101人  WhatHurtsMore

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地址。

Github

上一篇 下一篇

猜你喜欢

热点阅读