MBProgressHUD使用介紹

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:@"沒有新數據"];
    });
複製代碼

部分效果圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章