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的形式来操作的,这样写起代码来更直观也更高效。