UIWebView是最常用的一種控件钦椭。可是系統(tǒng)卻沒有給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)澳泵,則第一個階段會執(zhí)行完成,然后跳到第二個階段兼呵;假如加載時間很快(結束時進度值走到了0.5)兔辅,小于第一個階段的時間(2s),則直接跳入到結束階段击喂,此時x=0.5幢妄,階段四直接執(zhí)行完成。其他階段與上面的流程類似茫负。
這里我只講了一下我實現的大致思路蕉鸳,代碼就不貼了(一共也沒有多少代碼),喜歡的朋友可以去github下載demo忍法。
GitHub