在iOS中大量的app中都会应用到网页加载,在网页加载显示的过程中显示网页是否加载完成.当然,我们平时都是利用使用"SVProgressHUD"框架显示加载进程,很是快捷方便.
但是我们在一些app中,看到有利用UIProgressView显示加载进度.这些进度条通常是粘在导航栏的下方
navigationController?.view.insertSubview(progress, belowSubview: (navigationController?.navigationBar)!)
现在网页加载通常不是像下载文件一样,通过比较本地文件和服务器上文件的大小,算出进度条的比例,而是先加载到某个地方,再根据获取到的数据多少继续加载,因此需要创建一个计时器
timer = NSTimer.scheduledTimerWithTimeInterval(1/60, target: self, selector: "valueChange", userInfo: nil , repeats: true)
改变进度条的值,先直接加载到95%,然后根据情况继续加载
// 改变进度条状态
func valueChange(){
if isAnim {
progress += 0.05
if progress >= 0.95{
progress = 0.95
}
}else{
if progress == 1{
// 真的加载完成
self.hidden = true
timer?.invalidate()
}else{
// 从0.95的地方继续加载一会儿
progress += 0.05
}
}
}
在需要的时候启动计时器,在不需要的时候将上面的isAnim属性变为false,此时进度条就会停止动画