- 源代码基于0.91版本;
- 本篇只介绍相关公有API,同时简单说明实现方式
1. 用于快速调用HUD的类方法
1.1 在指定视图上显示和移除HUD
在视图中显示HUD,进入等待状态
1+ (MB_INSTANCETYPE)showHUDAddedTo:(UIView *)view animated:(BOOL)animated;在视图上移除HUD,退出等待状态
|
|
对于没有特别要求,只需要简单屏蔽用户交互时使用;二者一般成对使用。
- 移除视图中的所有HUD,退出等待状态
|
|
此方法会遍历查找视图层级中的所有HUD视图并移除。
快速显示和隐藏HUD方法,自动管理HUD的生命周期,故在实现中设置为“隐藏后直接移除视图”,如:
|
|
1.2 获取视图中存在的HUD对象
- 获取视图中当前显示的HUD对象
|
|
这里使用了逆序遍历view的子视图的方式,快速获取最上层的HUD对象:
|
|
- 获取视图中所有存在的HUD对象
|
|
2 初始化HUD的实例方法
2.1 使用UIWindow对象尺寸创建HUD
|
|
2.2 使用UIView对象尺寸创建HUD
|
|
说明:
- 二者都是通过调用initWithFrame方法进行实例化,只是参数类型不同;
- 需要创建方自主管理HUD的生存周期。
注意:
- 以上初始化方法中的参数只是由于指定HUD视图自身尺寸,并非添加到视图上。
- 添加到的父视图需要手动指定。
3 显示、隐藏HUD的相关实例方法
3.1 显示HUD视图,进入等待状态
|
|
3.2 隐藏HUD视图,退出等待状态
|
|
3.3 在指定时间后,隐藏HUD视图,退出等待状态
|
|
以上方法,都是在通过自己实例化HUD对象后(默认为隐藏状态),自主控制HUD视图的显示与隐藏。
4 在指定任务执行时,自动显示和隐藏HUD的相关方法
4.1 使用“target - selector”方式执行后台任务
|
|
此方法的实现步骤:
- 在后台自动创建新线程,在其中执行预定任务;
- 同时在主线程创建并显示HUD;
- 任务完成后,在主线程中清理缓存数据,同时移除HUD,结束等待状态。
|
|
4.2 使用“block”方式执行后台任务
|
|
4.3 使用“block”方式执行后台任务,并在完成后执行指定任务
|
|
4.4 使用“block”方式执行后台任务,任务在指定的GCD队列中执行
|
|
4.5 使用“block”方式执行后台任务,任务在指定的GCD队列中执行,并在完成后执行指定任务
|
|
以上通过block方式执行任务的API,都是通过GCD的方式,在并发队列中执行异步任务,简化了实现。如1.4.5的方法实现:
|
|