首先,要非常感谢博主“响尾猫”的文章 iOS进度指示器——NSProgress 对我的启示~~~下面是正文
NSProgress是iOS 7 之后Apple推出的用于进度管理的指示器类。当我们的App需要执行长时间的耗时任务时,可以使用NSProgress去显示任务执行的进度。适用场景如大图片、Gif加载等。
通过阅读NSProgress.h中的介绍,可以将NSProgess的工作原理总结为下面几点:
1、被监视的任务可以被拆分成一个树状结构,每一个父任务可以含有多个子任务,但是每一个子任务只能包含一个父任务。树的根节点就是需要展示给用户的完成进度。当子任务完成后,树的状态会被刷新。
2、NSProgress通过单元计数器 "Unit count"管理被跟踪的任务。在Unit count中有两个重要的值,分别是total 总量和complete 已完成。total在NSProgress对象被初始化的时候设置,complete则在任务执行的过程中通过 -setCompletedUnitCount:函数更新。
示例代码:
首先,在ViewDidLoad中定义一个NSTimer用于模拟耗时程序,初始化NSProgress的对象progress。NSTimer每隔一秒执行一次Task函数,Task每执行一次,porgress的complete 加 1
Task函数,模拟执行耗时任务
设置键值监听器,监听progress的fractionComplete的值