使用:(基本拷贝自以下github地址)
下载地址:
https://github.com/ninjinkun/NJKWebViewProgress
_progressProxy = [[NJKWebViewProgress alloc] init]; // instance variable
webView.delegate = _progressProxy;
_progressProxy.webViewProxyDelegate = self;
_progressProxy.progressDelegate = self;
-(void)webViewProgress:(NJKWebViewProgress *)webViewProgress updateProgress:(float)progress
{
[progressView setProgress:progress animated:NO];
}
progressProxy.progressBlock = ^(float progress) {
[progressView setProgress:progress animated:NO];
};
分析
之前也有遇到需要做webview进度条的需求,但是一直没有好的方法。最后我的处理方法是使用NSURLRquest 去请求数据,请求的进度可以拿到,请求结束之后把请求的数据加载到webview。
这样请求完成之前是不会显示数据的,只显示了进度条。所以很好奇NJKWebViewProgress是怎么做到的,分析如下:
- webViewDidStartLoad 是一个请求的开始,所有的请求都要经过它,未加载资源之前,能够得到一个URL 有多少个资源需要加载,使用_loadingCount++ 方式来计数。
- webViewDidFinishLoad、didFailLoadWithError 是一个请求的结束,每次请求结束 _loadingCount --,并重新计数进度
- 进度使用 _loadingCount/_maxLoadCount 的方式来计算
- 每次webViewDidFinishLoad、didFailLoadWithError 请求都加入了 waitForCompleteJS 这样的js到web view中,来检测网页是否加载完成。
- 把得到进度逻辑和展示进度的视图分开写,用代理把两个类联系起来,结构清晰、实现起来也会方便很多
总结
作者非常巧妙地通过计算需要加载的请求的个数,通过请求个数来现实加载进度,不得不佩服他的想法
分享到:
相关推荐
IOS--UIWebView加载进度条(NJKWebViewProgress)
NJKWebViewProgress 是一个 UIWebView 的进度条界面库,UIWebView 本身是不提供进度条的。
一款UIWebView的加载进度条,基于CAShapeLayer,有两种显示风格:纯颜色显示和渐变色显示
http://blog.csdn.net/duxinfeng2010/article/category/1155790 有详细介绍
有用的控件,经常使用设置背景透明 设置webview的backgroundColor属性为[UIColor clearColor]; ? 1 webView.backgroundColor = [UIColor clearColor]; 为webview中的HTML页面的body标签添加CSS背景样式设置 ? ...
作者chausson,源码CHWebView,封装iOS UIWebView常用功能的基础控件。
uiwebview的使用方法。从怎么建立uiwebview讲起,详细讲述了此控件的使用方法
UIWebView和js交互 里边自己写了个H5方便大家理解
本文主要介绍了UIWebView控件中字体大小和字体样式的修改,具有很好的参考价值。下面跟着小编一起来看下吧
使用UIWebView和JS进行交互,可以OC操作js,也可以JS对OC进行交互
这是我在学习ios的过程中写的一个demo,使用UIWebView实现一个简单的浏览器
UIWebView Web 网页 Demo 代码
很详细的介绍了ios开发中uiwebview的使用方法,可以快速掌握和使用uiwebview
IOS开发中因为引入cocos2dx,导致代码审核不通过无法提交( Apple will stop accepting submissions of apps that use UIWebView APIs...具体的修改方式使用以下的文件替换cocoas引擎中的UIWebViewImpl-ios.mm文件即可。
ios的UIWebView详解,定义、实现delegate、webView和js的交互、原生调用js、js调用原生
网页视图的基本使用,网络资源地址字符串的处理,UIWebView属性与协议的综合使用;
UIWebView+html+css,实现UIWebView中可点击链接,并且可显示gif动画效果
UIWebView原生与H5交互,pre;confirm;等包含三个H5页面跳转的交互demo