轉自:http://www.cnblogs.com/jys509/p/4757852.html
MBProgressHUD提示框官網地址:https://github.com/jdg/MBProgressHUD
官網里已經提供了足夠多的例子供我們使用,但在實現開發中,我們用到的只是其中的一小部分而已。為了使用更方便,下面對它進行擴展(Category)
MBProgressHUD+NJ.h
#import "MBProgressHUD.h" @interface MBProgressHUD (NJ) + (void)showSuccess:(NSString *)success; + (void)showSuccess:(NSString *)success toView:(UIView *)view; + (void)showError:(NSString *)error; + (void)showError:(NSString *)error toView:(UIView *)view; + (MBProgressHUD *)showMessage:(NSString *)message; + (MBProgressHUD *)showMessage:(NSString *)message toView:(UIView *)view; + (void)hideHUD; + (void)hideHUDForView:(UIView *)view; @end
MBProgressHUD+NJ.m
#import "MBProgressHUD+NJ.h"
@implementation MBProgressHUD (NJ)
/**
* 顯示信息
*
* @param text 信息內容
* @param icon 圖標
* @param view 顯示的視圖
*/
+ (void)show:(NSString *)text icon:(NSString *)icon view:(UIView *)view
{
if (view == nil) view = [[UIApplication sharedApplication].windows lastObject];
// 快速顯示一個提示信息
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];
hud.labelText = text;
// 設置圖片
hud.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"MBProgressHUD.bundle/%@", icon]]];
// 再設置模式
hud.mode = MBProgressHUDModeCustomView;
// 隱藏時候從父控件中移除
hud.removeFromSuperViewOnHide = YES;
// 1秒之后再消失
[hud hide:YES afterDelay:0.7];
}
/**
* 顯示成功信息
*
* @param success 信息內容
*/
+ (void)showSuccess:(NSString *)success
{
[self showSuccess:success toView:nil];
}
/**
* 顯示成功信息
*
* @param success 信息內容
* @param view 顯示信息的視圖
*/
+ (void)showSuccess:(NSString *)success toView:(UIView *)view
{
[self show:success icon:@"success.png" view:view];
}
/**
* 顯示錯誤信息
*
*/
+ (void)showError:(NSString *)error
{
[self showError:error toView:nil];
}
/**
* 顯示錯誤信息
*
* @param error 錯誤信息內容
* @param view 需要顯示信息的視圖
*/
+ (void)showError:(NSString *)error toView:(UIView *)view{
[self show:error icon:@"error.png" view:view];
}
/**
* 顯示錯誤信息
*
* @param message 信息內容
*
* @return 直接返回一個MBProgressHUD,需要手動關閉
*/
+ (MBProgressHUD *)showMessage:(NSString *)message
{
return [self showMessage:message toView:nil];
}
/**
* 顯示一些信息
*
* @param message 信息內容
* @param view 需要顯示信息的視圖
*
* @return 直接返回一個MBProgressHUD,需要手動關閉
*/
+ (MBProgressHUD *)showMessage:(NSString *)message toView:(UIView *)view {
if (view == nil) view = [[UIApplication sharedApplication].windows lastObject];
// 快速顯示一個提示信息
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];
hud.labelText = message;
// 隱藏時候從父控件中移除
hud.removeFromSuperViewOnHide = YES;
// YES代表需要蒙版效果
hud.dimBackground = YES;
return hud;
}
/**
* 手動關閉MBProgressHUD
*/
+ (void)hideHUD
{
[self hideHUDForView:nil];
}
/**
* 手動關閉MBProgressHUD
*
* @param view 顯示MBProgressHUD的視圖
*/
+ (void)hideHUDForView:(UIView *)view
{
if (view == nil) view = [[UIApplication sharedApplication].windows lastObject];
[self hideHUDForView:view animated:YES];
}
@end
我們可以看到上面的代碼,還引用了圖標。直接把圖標拷過去,最后的源碼里有提供。項目結構:

使用方法很非常的簡單。
彈框顯示成功:
[MBProgressHUD showSuccess:@"測試showSuccess"];
彈框顯示失敗:
[MBProgressHUD showError:@"測試showError"];
彈框顯示加載中:
[MBProgressHUD showMessage:@"正在加載數據中....."];
// 幾秒后消失,當然,這里可以改為網絡請求
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 移除HUD
[MBProgressHUD hideHUD];
// 提醒有沒有新數據
[MBProgressHUD showError:@"沒有新數據"];
});
部分效果圖



