MBProgressHUD && SVProgr
iOS开发中-使用提示框的场景有不少,现在最常用的两种提示框 - MBProgressHUD && SVProgressHUD ,具体什么场景使用哪个各有各的经验,我以实际项目需求,简单讲解一下 两种提示框 -- 基本属性的配置设置!
项目需求效果如下:

需求说明:
a. 提示框仅显示文字,不显示图片
b. 2.5s后消失(1.5s停留,1s渐变效果 -->一定要有逐渐消失效果)
c. 添加点击效果,如果点击,取消b去求的2.5s停留效果,0.5s后消失
区别 - SVProgress 都是用类方法 - [SVProgress showXXX]
- MBProgress 都是对象方法 -> alloc init ,在对对象进行操作!
--使用MBProgress
1.创建对象 - MBprogress

2.设置标题内容 -> 对象方法 - 不像SVProgress 是类方法!

3. 设置显示模式 - - >例如目前项目需求 - 仅设置文字,不设置图片的显示(枚举类型,可以根据需求设置不同的显示模式!)

compare - SVProgress:
SVProgress 我们常用的几种状态都是带图片的

为了满足项目需求->不带图片,使用showImage方法,然后图片置空!

4.设置标题颜色

小tips:设置标题颜色,除了直接设置label.textColor,还有一种设置方式:setContentColor,一样可以达到效果

compare :SVProgress -- 设置颜色
这里得注意,SVProgress 都是用的类方法,没有setTextColor之类的方法,通过 官方说明文档 + 一个一个测试,得知设置 标题颜色 = setForegroudColor

5.MBProgess - 设置背景色
MBprogress倒是有 直接set backgroundColor的方法,但是切记,这里可以自己手动测试一下,并不是改变HUD的背景色!而是整个View的颜色都变了!

效果图如下:

如上图,我们发现实际的效果并不是我们想要的仅仅改变HUB背景色的效果!
解决办法:
方法一:hud是有alpha属性的,直接设置透明度!

方法二:正规的设置方法! set bezelView 属性上的 backgroundColor!

6.项目需求的渐变消失效果 - 模糊消失
MBProgress: 设置1.0s 渐变 (alpha设置为0时消失)

compare - SVProgress:

SVProgress 是没有alpha属性的,除非我们 使用 alloc + init,创建出实例对象,所以alpha设置在这里行不通! --> 但是,经过我探究发现,虽然没有alpha属性,但是有其他方法可以达到类似效果--->就是上图的setFadeAnimation 方法!


7. 项目需求- 点击控制HUD直接消失(如果点击提示框->0.5s后 让 提示框消失!)
分析:MBProgress 本质是UIView,所以不能addtarget ,但是可以添加手势-实现点按效果!

然后再点按手势触发的方法中 - 调用MBProgress 消失的方法,达到效果!
compare - SVProgress

SVProgressHUD的本质也是UIView,如果将其alloc init,同样可以做到和MBProgress一样,为其添加手势!

SVProgress - 本质也是 UIView,但是我们都是用类方法创建 + 设置其属性的,add 手势方法,应该是 对象方法,不是类方法!
如果我们alloc init 出来一个 SVProgress, --> 和我们设置属性的 SVProgress 不是同一个
-->解决办法!直接调用self.View 的 touch begin方法!

最终的展示效果和事例的需求效果一致!
小结:现在的提示框,用MBProgress也很多,用SVProgress的也很多,两者都有其各自的优势才能同时存在这么久,我个人是比较习惯用SVProgress框架,因为类方法直接写比较快,但是我在探究上面需求的时候,先是用MBProgress实现出需求的效果之后,再进行对比探究!因为设置属性的时候,MBProgress的优势就体现出来了~