1. 程式人生 > >提示框第三方庫之MBProgressHUD iOS toast效果 動態提示框效果

提示框第三方庫之MBProgressHUD iOS toast效果 動態提示框效果

文章來自:http://blog.csdn.net/ryantang03/article/details/7877120

MBProgressHUD是一個開源專案,實現了很多種樣式的提示框,使用上簡單、方便,並且可以對顯示的內容進行自定義,功能很強大,很多專案中都有使用到。到GitHub上可以下載到專案原始碼https://github.com/jdg/MBProgressHUD,下載下來後直接把MBProgressHUD.h和MBProgressHUD.m拖入工程中就行,別忘了選擇拷貝到工程。完了在需要使用的地方匯入標頭檔案就可以開始使用了。首先看下工程截圖:

                                                                


接下來是整個Demo的完整介面,這裡我只選擇出了幾個常用的對話方塊,其他樣式的在原始碼提供的Demo裡可以找到,要用的話直接參考就可以。

                                                                        

接下來直接上程式碼了,標頭檔案部分:

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

實現檔案(按鈕實現部分):
  1. - (IBAction)showTextDialog:(id)sender {  
  2.     //初始化進度框,置於當前的View當中
  3.     HUD = [[MBProgressHUD alloc] initWithView:self.view];  
  4.     [self.view addSubview:HUD];  
  5.     //如果設定此屬性則當前的view置於後臺
  6.     HUD.dimBackground = YES;  
  7.     //設定對話方塊文字
  8.     HUD.labelText = @"請稍等";  
  9.     //顯示對話方塊
  10.     [HUD showAnimated:YES whileExecutingBlock:^{  
  11.         //對話方塊顯示時需要執行的操作
  12.         sleep(3);  
  13.     } completionBlock:^{  
  14.         //操作執行完後取消對話方塊
  15.         [HUD removeFromSuperview];  
  16.         [HUD release];  
  17.         HUD = nil;  
  18.     }];  
  19. }  
  20. - (IBAction)showProgressDialog:(id)sender {  
  21.     HUD = [[MBProgressHUD alloc] initWithView:self.view];  
  22.     [self.view addSubview:HUD];  
  23.     HUD.labelText = @"正在載入";  
  24.     //設定模式為進度框形的
  25.     HUD.mode = MBProgressHUDModeDeterminate;  
  26.     [HUD showAnimated:YES whileExecutingBlock:^{  
  27.         float progress = 0.0f;  
  28.         while (progress < 1.0f) {  
  29.             progress += 0.01f;  
  30.             HUD.progress = progress;  
  31.             usleep(50000);  
  32.         }  
  33.     } completionBlock:^{  
  34.         [HUD removeFromSuperview];  
  35.         [HUD release];  
  36.         HUD = nil;  
  37.     }];  
  38. }  
  39. - (IBAction)showProgressDialog2:(id)sender {  
  40.     HUD = [[MBProgressHUD alloc] initWithView:self.view];  
  41.     [self.view addSubview:HUD];  
  42.     HUD.labelText = @"正在載入";  
  43.     HUD.mode = MBProgressHUDModeAnnularDeterminate;  
  44.     [HUD showAnimated:YES whileExecutingBlock:^{  
  45.         float progress = 0.0f;  
  46.         while (progress < 1.0f) {  
  47.             progress += 0.01f;  
  48.             HUD.progress = progress;  
  49.             usleep(50000);  
  50.         }  
  51.     } completionBlock:^{  
  52.         [HUD removeFromSuperview];  
  53.         [HUD release];  
  54.         HUD = nil;  
  55.     }];  
  56. }  
  57. - (IBAction)showCustomDialog:(id)sender {  
  58.     HUD = [[MBProgressHUD alloc] initWithView:self.view];  
  59.     [self.view addSubview:HUD];  
  60.     HUD.labelText = @"操作成功";  
  61.     HUD.mode = MBProgressHUDModeCustomView;  
  62.     HUD.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Checkmark"]] autorelease];  
  63.     [HUD showAnimated:YES whileExecutingBlock:^{  
  64.         sleep(2);  
  65.     } completionBlock:^{  
  66.         [HUD removeFromSuperview];  
  67.         [HUD release];  
  68.         HUD = nil;  
  69.     }];  
  70. }  
  71. - (IBAction)showAllTextDialog:(id)sender {  
  72.     HUD = [[MBProgressHUD alloc] initWithView:self.view];  
  73.     [self.view addSubview:HUD];  
  74.     HUD.labelText = @"操作成功";  
  75.     HUD.mode = MBProgressHUDModeText;  
  76.     //指定距離中心點的X軸和Y軸的偏移量,如果不指定則在螢幕中間顯示
  77. //    HUD.yOffset = 150.0f;
  78. //    HUD.xOffset = 100.0f;
  79.     [HUD showAnimated:YES whileExecutingBlock:^{  
  80.         sleep(2);  
  81.     } completionBlock:^{  
  82.         [HUD removeFromSuperview];  
  83.         [HUD release];  
  84.         HUD = nil;  
  85.     }];  
  86. }  

依次實現的效果如下:

                          

                          

下面這個效果就類似Android中的Toast:

                                                     

以上就簡單介紹了MBProgressHUD的使用,這裡都是採用block的形式來操作的,這樣寫起程式碼來更直觀也更高效。