显示网络加载进度条

      在加载网页时,一般头部都有一个显示进度的进度条视图。但这个进度并非是真实的进度,只是一个假的进度显示。它不能真实地反映网页加载的进度,只是给用户一个假象而已。苹果内置的浏览器的进度条是真实地反映网络的加载进度的,这个技术设计了苹果内部的底层的一些东西。我们可以研究,也可以用。不过如果你的应用用了,那么苹果公司就会拒绝你上架到AppStore。所以我们只能用一个假象来显示进度。

     直接使用框架可以省去很多事情。当然你也可以自己写,用定时器不停地加载UIProgressView对象的progress值,当加载到一定值时移除定时器停止加载,并当加载完毕时把UIProgressView对象隐藏就可以了。

  使用框架的方法:NJKWebViewProgress框架下载地址https://github.com/ninjinkun/NJKWebViewProgress

直接用CocoaPods安装即可

pod 'NJKWebViewProgress'

在需要用到的控制器导入头文件#import "NJKWebViewProgress.h"

遵守它的代理NJKWebViewProgressDelegate

创建进度代理对象和自己的UIProgressView对象

@property (weak, nonatomic) IBOutlet UIProgressView *progressView;

/** 进度代理对象 */

@property (nonatomic, strong) NJKWebViewProgress *progress;

在适当的位置加入以下代码

self.progress = [[NJKWebViewProgress alloc] init];//初始化对象

self.webView.delegate=self.progress;//把webView的代理设置成self.progress。这样才能监听它的进度

__weak typeof(self) weakSelf = self;//把self改成弱引用,这样就可以在block中使用。

self.progress.progressBlock = ^(float progress) {

weakSelf.progressView.progress = progress;//自己定义的进度条对象的进度值等于block返回的进度值。

NSLog(@"%f",progress);

weakSelf.progressView.hidden = (progress == 1.0);//当进度值为1时自己定义的进度条UIProgressView对象隐藏。

};

self.progress.webViewProxyDelegate = self;//把框架进度条代理对象内部的webViewProxyDelegate代理设置为控制器,这样才能用UIWebViewDelegate的代理方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容