MBProgressHUD思路讲解
MBProgressHUD使用的语法有点过时(使用的是MRC),也没有考虑号重复加载而重新创建一个MBProgressHUD对象内存没有做到优化,在使用的时候还要保证MBProgressHUD创建的是最后一个不是很可能会被其它控件遮挡住,在重构这个方法中坐标的运算太复杂了。
MBProgressHUD里能使用俩种模式,一种是文字提示,还有一种是操作进行中提示。
1.文字提示
1》实例一个MBProgressHUD对象
+ (MB_INSTANCETYPE)showHUDAddedTo:(UIView
*)view animated:(BOOL)animated通过在外部调用这个类方法来创建实例
在自定义的- (id)initWithFrame:(CGRect)frame进行初始化,默认设置一些初始属性,创建文字控件,提示的样式初始化默认的是转圈圈提示,kvo的提示用来监听事物的改变而调用,注册一个通知,这里所有外部调用方法都是用类方法实现的。
2》如何使用MBProgressHUD
MBProgressHUD的使用思路就首先进行实例化,在就通过set方法来添加用户对提示框的要求。取消掉MBProgressHUD在这里是在外部调用一个类方法就可以了(这是为了减少用户代码量的编写)。
注:
1.减少用户代码量的编写
如果我们使用的对象方法,那就是我在外部调用的时候我的外部调用必须使用对象方法。比如:我们使用提示进行的样式的时候,进行中结束了那我们就要把提示框取消掉,而这里有一个外部的方法让我们调用,这里是使用一个类方法调用就可以了没有多余的代码。如果换成对象方法那我就必须在创建MBProgressHUD的时候我就必须让其在外部也能获得这个对象在@property创建一个能放着MBProgressHUD类的对象…后面还有一些方法就比使用类方法就多这些方法。
总结:
MBProgressHUD总的来说还是不错的,它留给我们的改动性还是比较大的,让我们有很大的选着性。问题也是有的,在使用时一定要注意控件的创建循序一定要它是最后一个创。再有就是重写里的方法是可以做一个封装,这样太复杂了。
具体执行步骤:
Progress的创建
数据的初始化
UI,状态,KVO进行数据监控,通知
KVO的调用
注册KVO
KVO调用方法(这里涉及多线程问题)
KVO具体监听到的逻辑
KVO是这里的一大功臣:它会监听到我们是否要修改提示样式,文字,颜色等属性的变化,有改变就对应的就UI修改掉。