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