关闭

MBProgressHUD

262人阅读 评论(0) 收藏 举报

MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单、方便,并且可以对显示的内容进行自定义,功能很强大,很多项目中都有使用到。到GitHub上可以下载到项目源码https://github.com/jdg/MBProgressHUD,下载下来后直接把MBProgressHUD.h和MBProgressHUD.m拖入工程中就行,别忘了选择拷贝到工程。完了在需要使用的地方导入头文件就可以开始使用了。首先看下工程截图:

                                                                

接下来是整个Demo的完整界面,这里我只选择出了几个常用的对话框,其他样式的在源码提供的Demo里可以找到,要用的话直接参考就可以。

                                                                        

接下来直接上代码了,头文件部分:

  1. #import <UIKit/UIKit.h>  
  2. #import "MBProgressHUD.h"  
  3.   
  4. @interface ViewController : UIViewController  
  5. {  
  6.     //HUD(Head-Up Display,意思是抬头显示的意思)  
  7.     MBProgressHUD *HUD;  
  8. }  
  9.   
  10. - (IBAction)showTextDialog:(id)sender;  
  11. - (IBAction)showProgressDialog:(id)sender;  
  12. - (IBAction)showProgressDialog2:(id)sender;  
  13. - (IBAction)showCustomDialog:(id)sender;  
  14. - (IBAction)showAllTextDialog:(id)sender;  
  15.   
  16. @end  

实现文件(按钮实现部分):

  1. - (IBAction)showTextDialog:(id)sender {  
  2.     //初始化进度框,置于当前的View当中  
  3.     HUD = [[MBProgressHUD alloc] initWithView:self.view];  
  4.     [self.view addSubview:HUD];  
  5.       
  6.     //如果设置此属性则当前的view置于后台  
  7.     HUD.dimBackground = YES;  
  8.       
  9.     //设置对话框文字  
  10.     HUD.labelText = @"请稍等";  
  11.       
  12.     //显示对话框  
  13.     [HUD showAnimated:YES whileExecutingBlock:^{  
  14.         //对话框显示时需要执行的操作  
  15.         sleep(3);  
  16.     } completionBlock:^{  
  17.         //操作执行完后取消对话框  
  18.         [HUD removeFromSuperview];  
  19.         [HUD release];  
  20.         HUD = nil;  
  21.     }];  
  22. }  
  23.   
  24. - (IBAction)showProgressDialog:(id)sender {  
  25.     HUD = [[MBProgressHUD alloc] initWithView:self.view];  
  26.     [self.view addSubview:HUD];  
  27.     HUD.labelText = @"正在加载";  
  28.       
  29.     //设置模式为进度框形的  
  30.     HUD.mode = MBProgressHUDModeDeterminate;  
  31.     [HUD showAnimated:YES whileExecutingBlock:^{  
  32.         float progress = 0.0f;  
  33.         while (progress < 1.0f) {  
  34.             progress += 0.01f;  
  35.             HUD.progress = progress;  
  36.             usleep(50000);  
  37.         }  
  38.     } completionBlock:^{  
  39.         [HUD removeFromSuperview];  
  40.         [HUD release];  
  41.         HUD = nil;  
  42.     }];  
  43. }  
  44.   
  45. - (IBAction)showProgressDialog2:(id)sender {  
  46.     HUD = [[MBProgressHUD alloc] initWithView:self.view];  
  47.     [self.view addSubview:HUD];  
  48.     HUD.labelText = @"正在加载";  
  49.     HUD.mode = MBProgressHUDModeAnnularDeterminate;  
  50.       
  51.     [HUD showAnimated:YES whileExecutingBlock:^{  
  52.         float progress = 0.0f;  
  53.         while (progress < 1.0f) {  
  54.             progress += 0.01f;  
  55.             HUD.progress = progress;  
  56.             usleep(50000);  
  57.         }  
  58.     } completionBlock:^{  
  59.         [HUD removeFromSuperview];  
  60.         [HUD release];  
  61.         HUD = nil;  
  62.     }];  
  63. }  
  64.   
  65. - (IBAction)showCustomDialog:(id)sender {  
  66.     HUD = [[MBProgressHUD alloc] initWithView:self.view];  
  67.     [self.view addSubview:HUD];  
  68.     HUD.labelText = @"操作成功";  
  69.     HUD.mode = MBProgressHUDModeCustomView;  
  70.     HUD.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Checkmark"]] autorelease];  
  71.     [HUD showAnimated:YES whileExecutingBlock:^{  
  72.         sleep(2);  
  73.     } completionBlock:^{  
  74.         [HUD removeFromSuperview];  
  75.         [HUD release];  
  76.         HUD = nil;  
  77.     }];  
  78.       
  79. }  
  80.   
  81. - (IBAction)showAllTextDialog:(id)sender {  
  82.     HUD = [[MBProgressHUD alloc] initWithView:self.view];  
  83.     [self.view addSubview:HUD];  
  84.     HUD.labelText = @"操作成功";  
  85.     HUD.mode = MBProgressHUDModeText;  
  86.       
  87.     //指定距离中心点的X轴和Y轴的偏移量,如果不指定则在屏幕中间显示  
  88. //    HUD.yOffset = 150.0f;  
  89. //    HUD.xOffset = 100.0f;  
  90.       
  91.     [HUD showAnimated:YES whileExecutingBlock:^{  
  92.         sleep(2);  
  93.     } completionBlock:^{  
  94.         [HUD removeFromSuperview];  
  95.         [HUD release];  
  96.         HUD = nil;  
  97.     }];  
  98. }  

依次实现的效果如下:

                          


                          

下面这个效果就类似Android中的Toast:

                                                     

以上就简单介绍了MBProgressHUD的使用,这里都是采用block的形式来操作的,这样写起代码来更直观也更高效。

0
0
查看评论

MBProgressHUD实现分析

源码来源:https://github.com/jdg/MBProgressHUD 版本:0.9.1 MBProgressHUD是一个显示HUD窗口的第三方类库,用于在执行一些后台任务时,在程序中显示一个表示进度的loading视图和两个可选的文本提示的HUD窗口。我想最多是应用在加载网...
  • baidu_25743639
  • baidu_25743639
  • 2016-06-23 18:38
  • 879

iOS开发之MBProgressHUD的使用

MBProgressHUD是iOS中的一个第三方库,主要是在界面上显示一个加载的进度框或者提示框,如下图所示:                下面就记录一下使用MBProgressHUD的方法: 1、导入MBProgr...
  • yubo_725
  • yubo_725
  • 2016-04-14 17:40
  • 6263

Sometimes MBProgressHUD不能显示

MBProgressHUD 显示到view上有一定的局限性, 显示到Window 上有时候又 不能显示出来, 对于这么优秀的一个控件,如果不能使用正确,使用好,确实有点可惜。 之前一直使用MBProgressHUD显示loading,saving之类的信息, 一直都没有什么问题,突然有一天出现...
  • theonezh
  • theonezh
  • 2013-07-19 14:16
  • 3296

iOS 关于MBProgressHUD的使用 自定义动画

MBProgressHUD的常用属性和用法: /* 要将一个MBProgressHUD显示出来,1,创建对象;2,将HUD添加到view上;3,调用show方法 隐藏,1,hide:方法; 2,hide: afterDelay: 方...
  • txz_gray
  • txz_gray
  • 2016-12-02 10:55
  • 5819

IOS 第三方库之-MBProgressHUD的使用详解

1,MBProgressHUD常用属性和用法Demo - (void)testMBProgressHUD { NSLog(@"test MBProgressHUD "); /* 要将一个MBProgressHUD显示出来,1,创建对象;2,将HUD添...
  • walden00
  • walden00
  • 2015-09-24 15:46
  • 2775

关于MBProgressHUD自定义帧动画

现在很多APP的HUD已经都是自定义动画了,MBProgressHUD没有开放的API可以让我们直接使用,需要到.m文件中去修改源码。 首先在.m文件中找到 - (void)updateIndicators 方法在 if (mode == MBProgressHUDModeInd...
  • loveqcx123
  • loveqcx123
  • 2016-01-29 09:29
  • 4254

[iOS]: 如何改变MBProgressHud的背景方框的颜色

in MBProgressHud.m file,find  CGContextSetGrayFillColor(context, 0.0f, self.opacity); comment it and then add following line to set transpare...
  • totogogo
  • totogogo
  • 2012-10-05 11:07
  • 11073

MBProgressHUD自定义Loading图片

githud路径:https://github.com/jdg/MBProgressHUD MBProgressHUD提供了一个很好的demo,在github上可以下载。 但是在loading中,如何才能自定义转圈图片呢? 我们需要自定义一个动画,即将一个image旋转即可,如果还需要在旋转图...
  • icefishlily
  • icefishlily
  • 2017-03-02 14:33
  • 851

MBProgressHUD更改成自定义图片

说来惭愧,平时看代码,都没有极客思想,想着就是完成了任务就完事OK。没有想过知其所以然。 今天听朋友说到一个需求,是要用HUD显示自定义的图片。然后,就有了本文。 先上效果图吧。图随便抠的,随意看吧。 废话不多说,直接上代码 + (void)showMsg:(NSStr...
  • wwwwwwwwwwwwdi
  • wwwwwwwwwwwwdi
  • 2016-09-21 23:55
  • 2997

MBProgressHUD换行显示文字

-(void)showToast:(NSString *)string{     [MBProgressHUD hideAllHUDsForView:self.view animated:YES];     AppDelegate *app = (Ap...
  • aiqing711
  • aiqing711
  • 2016-01-11 14:44
  • 2371
    个人资料
    • 访问:152958次
    • 积分:3231
    • 等级:
    • 排名:第12504名
    • 原创:169篇
    • 转载:58篇
    • 译文:0篇
    • 评论:4条
    最新评论