SVProgressHUD和MBProgressHUD的优缺点与SVProgressHUD震动实现

11 篇文章 0 订阅
1 篇文章 0 订阅

SVProgressHUD和MBProgressHUD是iOS开发中常用的toast弹窗。他们使用十分广泛,他们都存在明显的优缺点。他们的贝塞尔曲线动画十分难修改。
弹出框有两种:
1.模态弹出窗,它弹出时无法进行其它操作,不会自动消失,需要调用隐藏弹出窗函数才能消失(SVProgressHUD在显示其它toast弹出窗时时间到了也会消失)。
2.toast弹出框,会自动消失的提示框。
SVProgressHUD使用十分广泛,优点是:
1.采用异步显示弹出框,通知隐藏弹出框,发个通知就能隐藏弹出框;
2.具有跨页面显示功能(在B页面操作后显示弹出框,返回A页面能看到弹出框);
3.弹出框只影响弹出框的部分,点击非弹出框(会自动消失的toast弹窗)部分仍旧能点击操作;
4.能实现弹出时带震动效果。
缺点也很显然:
1.显示模态弹出框(不会自动消失的弹出框)需要时间,当一个发送一个请求时显示模态弹出框,请求结束隐藏模态弹出框。若请求响应极快只用了十几毫秒,就会出现模态弹出框没有取消,一直在存在。出现该问题的原因是SVProgressHUD是异步实现显示的,需要时间的,当显示了模态弹出窗后,在它没有真正显示出来前请求已经结束,发送了隐藏弹出窗,但是实际由于它没有显示出来,导致实际上没有隐藏弹出框,当它显示出来后就没有对应隐藏弹出框对应处理。你总不能让后台返回的慢些吧!这样不是降低用户体验吗?
2.不能滑动立即移除不想看的提示框。
SVProgressHUD实现震动效果:

- (void)setDefaultSVProgressHUD {
    [SVProgressHUD setHapticsEnabled:YES];
}

MBProgressHUD优缺点和SVProgressHUD正好相反。
MBProgressHUD优点:
1.实时显示,一对一显示隐藏,不存在SVProgressHUD的由于请求过快隐藏不了问题。
缺点:
1.一般都把它加在[[UIApplication sharedApplication].delegate window]上,而[[UIApplication sharedApplication].delegate window]又依赖于具体页面。若app启动时首页没有显示出来就弹出toast弹框,app会闪退。
2.由于加在具体的[[UIApplication sharedApplication].delegate window]上,没有跨页面的显示能力。在B页面操作后显示弹出框,返回A页面不能看到弹出框。有的人使用启动一个线程显示弹出框,这样会造成内存释放问题,浪费资源。有的人采用弹出toast框后延迟一段时间再返回或进入下一个页面,这样严重降低用户体验。
3.需要找到对应的弹出窗加在的对象,然后隐藏。我以前就在使用它时遇到这个问题,被领导狠批评了一顿。在A页面发送了多个请求,其中根据后台返回的情况跳转到另一个页面,由于没有把所有情况都考虑取消模态弹出窗,导致进入B页面发送请求,然后返回A面后弹出框一直在转,无法取消,无法再次放回上一层页面,而app卡在哪里。我们不能完全依赖于程序猿的代码完备性,而应该像SVProgressHUD一样随时取消弹出框有冗余机制。
4.它的toast弹出框出现时,无法点击非弹出框下面的页面。
他们的优缺点互补,但是一个app通常只有一种类型的弹出窗,他们的动画又难以修改。SVProgressHUD优点更多,但是还存在缺点。他们都不时完美的弹出框。
5.不能滑动立即移除不想看的提示框。
完美的弹出窗应该具有他们两个者的优点,而没有他们的缺点。如跨页面弹出,实时方便显示取消,点击toast弹出框后面的上下控件能操作,能很容易修改显示的模态弹出框动画。这样的弹出框就需要自动定义window类的单例弹出框。具体见《多页面悬停控件和如何获得多UIWindow的页面UIWindow》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
今天LemonKit给大家带来的是 柠檬泡泡控件 !!!!(给个英文名:LKBubble) 相信大家做iOS开发肯定都用户SVProgressHUD 或者 MBProgressHUD,但是觉没觉得很死板呢,可定制性不算是太高,而且动画略丑(个人觉得非常丑)。所以一气之下,自己胡乱写了一个,大家可以看看哦(上面有效果图),要是喜欢的朋友可以去Github给个星星~!!!这是个纯国产的透明指示层~ 本身LKBubble只是一个提示框,根据设置的LKBubbleInfo弹出框的样式来显示对应的效果,为了方便大家,我在工程里面直接写了三个自带的三个样式提示框,带有对号的成功提示,带有叉的错误提示,仿google的等待进度提示框,大家可以看一下代码,很容易就可以自定义一个带有动画效果的绚丽的提示框,也可以基于我提供的三个提示框LKBubbleInfo来快速的针对自己项目来修改主题风格哦! 可以自定义如下提示框: 1. 自定义单图的泡泡控件 2. 自定义多图帧动画的泡泡控件 3. 可以自己通过绘图绘制动画的泡泡控件(自带的三种提示框就是通过这种方式绘制的) 4. 只有标题的泡泡控件 5. 可以通过配置任意修改泡泡显示位置(屏幕上中下三个位置,当然还可以通过配置偏移量方式修改到任意位置!) 6. 图上标题下,图左标题右,要啥样就能变成啥样,随你的APP风格变化! 7. 所有的颜色均可配置,你项目什么风格,整体就什么风格! 8. 你自定义好的LKBubbleInfo,团队人无需其他复杂操作,即可调用你写的泡泡控件风格! 调用我直接封装的提示框非常方便,比如在UIViewController中可以直接调用下面代码弹出成功提示框: [self showRightWithTitle: @"添加成功" autoCloseTime: 2]; 没错,就一行代码,就可以啦! 更多的方便的功能大家可以自己摸索哦! 还是老样子,附件中只提供核心代码,还是建议大家去Github下载最新的代码,因为这个工程会越来越吸引人哦!!! 另外还得磨叽一遍:LemonKit的所有代码都会推出三个版本:iOS-OC , iOS-Swift , Android 马上就会推出Android的对应版本,后续可以去安卓巴士中找到安卓对应的版本哦!! 当然也可以直接去Github上下载~ 别忘啦,帮我点一下star!! 多谢 另外新建了个QQ群,大家要是使用过程中不懂得或者技术有问题可以加这个群来聊一聊,当然技术问题也可以哦! 欢迎大家加入: LemonKit QQ群:370157608 Github项目地址: Android版本:https://github.com/1em0nsOft/LemonKit4Android iOS OC版本:https://github.com/1em0nsOft/LemonKit4iOS iOS Swift版本:https://github.com/1em0nsOft/LemonKit4iOS-Swift

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值