UIWebView自定义进度条

字数 357阅读 113

UIWebView是最常用的一种控件。可是系统却没有给webview提供加载进度条。所以我们只能自己加一个HUD,或者自定义进度条。这里我仿照微信自定义了一个进度条。

实现的大致思路

说是进度条,其实这并不是真正意义上的进度条(微信也一样,可能获取webveiw的加载进度有点难度)。所以,我们只能根据加载完成的总时间来自行控制进度条的进度值(也就是假数据)。
我把整个加载过程分为四个阶段:

阶段 进度范围 阶段时间
阶段一 0~0.6 2秒
阶段二 0.6~0.8 2秒
阶段三 0.8~0.95 3秒
结束阶段 x~1.0(x表示即将结束时的进度值) 0.12秒

我使用的UIProgressView和一个定时器timer来实现的进度条。四个阶段切换的逻辑:假如加载时间大于第一个阶段的时间(2s),则第一个阶段会执行完成,然后跳到第二个阶段;假如加载时间很快(结束时进度值走到了0.5),小于第一个阶段的时间(2s),则直接跳入到结束阶段,此时x=0.5,阶段四直接执行完成。其他阶段与上面的流程类似。

这里我只讲了一下我实现的大致思路,代码就不贴了(一共也没有多少代码),喜欢的朋友可以去github下载demo。
GitHub

推荐阅读更多精彩内容