WBHUDManager

更新日志

2018-08-01:更新API,支持配置更多自定義設置,錄制GIF。
2018-09-09:支持pod安裝

前言

在我們平時做項目的時候,為了提高交互體驗,難免會用到一些提示語。除了UI上有特殊的要求需要自定義提示UI,一般會選擇GitHub上一些知名的提示框架庫,如:

之前做項目都是用的SVProgressHUD,這個三方提示庫使用非常接單,基于這個庫,也很好做自定義提示封裝。后來做項目改成了MBProgressHUD,相對于SVProgressHUD,MBProgressHUD使用相對來說要麻煩一點,因此,我對MBProgressHUD一些常用提示進行了封裝,最開始封裝的工具類存在著一些缺點,比如說在網絡請求的時候,如果網絡不好,拿不到回調,MBProgressHUD就會一直顯示,用戶無法交互,因此對這個工具類進行了改進。

MBProgressHUD(v1.1.0)

我主要寫了一個分類,有菊花、文字、文字+圖片提示,并提供了顯示完成對調,方便顯示完成后進行相應的操作或界面跳轉,提供的調用方法如下:

// MARK:Loading
/**
 只顯示菊花,不會自動消失 (白字+黑底)

 @return MBProgressHUD實例對象
 */
+ (MBProgressHUD *)wb_showActivity;

/**
 只顯示菊花,不會自動消失 (白字+黑底+自定義視圖)

 @param view 要顯示的視圖
 @return MBProgressHUD實例對象
 */
+ (MBProgressHUD *)wb_showActivity:(UIView *)view;

/**
 菊花+文字 (白字+黑底)

 @param message 加載文字
 @return  MBProgressHUD實例對象
 */
+ (MBProgressHUD *)wb_showActivityMessage:(NSString *)message;

/**
 菊花+文字 (白字+黑底)

 @param message 加載文字
 @param view 要顯示的視圖
 @return MBProgressHUD實例對象
 */
+ (MBProgressHUD *)wb_showActivityMessage:(NSString *)message
                                   toView:(UIView *)view;

/**
 菊花+文字 (自定義文字+內容顏色+蒙版顏色+容器顏色)

 @param message 加載文字
 @param view 要顯示的視圖
 @param contentColor 內容顏色
 @param maskColor 蒙版顏色
 @param bezelColor 容器顏色
 @return MBProgressHUD實例對象
 */
+ (MBProgressHUD *)wb_showActivityMessage:(NSString *)message
                                   toView:(UIView *)view
                             contentColor:(UIColor *)contentColor
                                maskColor:(UIColor *)maskColor
                               bezelColor:(UIColor *)bezelColor;

/**
 菊花+文字 (自定義文字+文字顏色+蒙版顏色+容器顏色)

 @param message 加載文字
 @param view 要顯示的視圖
 @param titleColor 文字顏色
 @param maskColor 蒙版顏色
 @param bezelColor 容器顏色
 @return MBProgressHUD實例對象
 */
+ (MBProgressHUD *)wb_showActivityMessage:(NSString *)message
                                   toView:(UIView *)view
                               titleColor:(UIColor *)titleColor
                                maskColor:(UIColor *)maskColor
                               bezelColor:(UIColor *)bezelColor;

// MARK:Text
/**
 提示文字 (自定義文+位置中間 + 顯示在window)

 @param message 文字
 */
+ (void)wb_showMessage:(NSString *)message;

/**
 提示文字 (標題 + 詳情文字)

 @param message 文字
 @param detailMessage 詳情文字
 */
+ (void)wb_showMessage:(NSString *)message
         detailMessage:(NSString *)detailMessage;

/**
 提示文字 (標題 + 詳情文字 + 自定義位置 + 視圖)

 @param message 文字
 @param detailMessage 詳情文字
 @param position 位置
 */
+ (void)wb_showMessage:(NSString *)message
         detailMessage:(NSString *)detailMessage
                toView:(UIView *)view
              position:(WBHUDPositionStyle)position;

/**
 提示文字(自定義文+位置中間+顯示在window+完成回調)

 @param message 文字
 @param completion 完成回調
 */
+ (void)wb_showMessage:(NSString *)message
            completion:(MBProgressHUDCompletionBlock)completion;

/**
 提示文字(自定文字+位置中間+自定義顯示視圖+完成回調)

 @param message 文字
 @param view 要顯示的視圖
 @param completion 完成回調
 */
+ (void)wb_showMessage:(NSString *)message
                toView:(UIView *)view
            completion:(MBProgressHUDCompletionBlock)completion;

/**
 提示文字 (自定義文字+自定義位置+自定義顯示視圖)

 @param message 文字
 @param view 要顯示的視圖
 @param position 位置
 @param completion 完成回調
 */
+ (void)wb_showMessage:(NSString *)message
                toView:(UIView *)view
              position:(WBHUDPositionStyle)position
            completion:(MBProgressHUDCompletionBlock)completion;

/**
 提示文字 (自定義文字+詳情文字+自定義位置+內容樣式)

 @param message 文字
 @param detailTitle 詳情文字
 @param view 要顯示的視圖
 @param position 顯示位置
 @param contentStyle 內容樣式
 @param completion 完成回調
 */
+ (void)wb_showMessage:(NSString *)message
           detailTitle:(NSString *)detailTitle
                toView:(UIView *)view
              position:(WBHUDPositionStyle)position
          contentStyle:(WBHUDContentStyle)contentStyle
            completion:(MBProgressHUDCompletionBlock)completion;

// MARK:Image

/**
 自定義成功提示 (顯示在window)

 @param success 提示文字
 */
+ (void)wb_showSuccess:(NSString *)success;

/**
 自定義成功提示 (顯示在window + 完成回調)

 @param success 提示文字
 @param completion 完成回調
 */
+ (void)wb_showSuccess:(NSString *)success
            completion:(MBProgressHUDCompletionBlock)completion;

/**
 自定義成功提示 (顯示在window + 完成回調 + 自定義顯示視圖)

 @param success 提示文字
 @param view 顯示視圖
 @param completion 完成回調
 */
+ (void)wb_showSuccess:(NSString *)success
                toView:(UIView *)view
            completion:(MBProgressHUDCompletionBlock)completion;

/**
 錯誤提示 (顯示在window)

 @param error 提示文字
 */
+ (void)wb_showError:(NSString *)error;

/**
 錯誤提示 (顯示在window + 完成回調)

 @param error 錯誤提示
 @param completion 完成回調
 */
+ (void)wb_showError:(NSString *)error
          completion:(MBProgressHUDCompletionBlock)completion;

/**
 錯誤提示 (顯示在window + 完成回調 + 自定義顯示視圖)

 @param error 錯誤提示
 @param view 示視圖
 @param completion 完成回調
 */
+ (void)wb_showError:(NSString *)error
              toView:(UIView *)view
          completion:(MBProgressHUDCompletionBlock)completion;

/**
 信息提示 (window)

 @param info 提示文字
 */
+ (void)wb_showInfo:(NSString *)info;

/**
 信息提示 (window + 完成回調)

 @param info 提示文字
 @param completion 完成回調
 */
+ (void)wb_showInfo:(NSString *)info
         completion:(MBProgressHUDCompletionBlock)completion;

/**
 信息提示 (window + 完成回調 + 自定義顯示視圖)

 @param info 提示文字
 @param view 自定義顯示視圖
 @param completion 完成回調
 */
+ (void)wb_showInfo:(NSString *)info
             toView:(UIView *)view
         completion:(MBProgressHUDCompletionBlock)completion;

/**
 警告提示 (window)

 @param warning 提示文字
 */
+ (void)wb_showWarning:(NSString *)warning;

/**
  警告提示 (window + 完成回調)

 @param warning 警告
 @param completion 完成回調
 */
+ (void)wb_showWarning:(NSString *)warning
            completion:(MBProgressHUDCompletionBlock)completion;

/**
 警告提示 (window + 完成回調 + 自定義視圖)

 @param warning 警告
 @param view 自定義視圖
 @param completion 完成回調
 */
+ (void)wb_showWarning:(NSString *)warning
                toView:(UIView *)view
            completion:(MBProgressHUDCompletionBlock)completion;

/**
 自定義圖片 + 文字提示

 @param text 文字
 @param icon 圖片名
 @param view 要顯示的視圖
 @param completion 完成回調
 */
+ (void)wb_show:(NSString *)text
           icon:(NSString *)icon
           view:(UIView *)view
     completion:(MBProgressHUDCompletionBlock)completion;

// MARK:Switch Model
/**
 Model切換

 @param view 要顯示的視圖
 @param title 要顯示的文字
 @param configBlock 配置hud
 @return MBProgressHUD實例對象
 */
+ (MBProgressHUD *)wb_showModelSwitch:(UIView *)view
                                title:(NSString *)title
                          configBlock:(WBHUDConfigBlock)configBlock;

// MARK:Progress
/**
 文字 + 進度條

 @param view 要顯示的視圖
 @param progressStyle 進度樣式
 @param title 提示文字
 @param configBlock 進度配置block
 @return MBProgressHUD實例對象
 */
+ (MBProgressHUD *)wb_showDownloadToView:(UIView *)view
                           progressStyle:(WBHUDProgressStyle)progressStyle
                                   title:(NSString *)title
                             configBlock:(WBHUDConfigBlock)configBlock;

/**
 文字 + 進度條 + 取消按鈕

 @param view 要顯示的視圖
 @param progressStyle 進度樣式
 @param title 提示文字
 @param cancelTitle 取消按鈕標題
 @param configBlock 進度配置block
 @param cancelBlock 取消按鈕點擊回調
 @return MBProgressHUD實例對象
 */
+ (MBProgressHUD *)wb_showDownloadToView:(UIView *)view
                           progressStyle:(WBHUDProgressStyle)progressStyle
                                   title:(NSString *)title
                             cancelTitle:(NSString *)cancelTitle
                             configBlock:(WBHUDConfigBlock)configBlock
                             cancelBlock:(WBHUDCancelBlock)cancelBlock;

// MARK:Hide
+ (void)wb_hideHUD;
+ (void)wb_hideHUDForView:(UIView *)view;

舉一個.m顯示菊花方法的例子吧,MBProgressHUD最新版本對比老版本API還是有些變化的:

/** < 創(chuàng)建HUD > */
+ (MBProgressHUD *)wb_createHUD:(UIView *)view {
    if (view == nil) view = (UIView *)[UIApplication sharedApplication].delegate.window;
    return [MBProgressHUD showHUDAddedTo:view
                                animated:YES];
}

/** < 設置HUD > */
+ (MBProgressHUD *)wb_configHUDWithView:(UIView *)view
                                  title:(NSString *)title
                            autoDismiss:(BOOL)autoDismiss
                             completion:(MBProgressHUDCompletionBlock)completion {
    MBProgressHUD *hud = [self wb_createHUD:view];
    /** < 自動換行 > */
    hud.label.numberOfLines = 0;
    /** < 提示文字 > */
    hud.title(title);
    /** < 隱藏移除 > */
    hud.removeFromSuperViewOnHide = YES;
    /** <默認內容樣式:黑底白字 > */
    hud.hudContentStyle(WBHUDContentBlackStyle);
    /** < 自動隱藏 > */
    if (autoDismiss) {
        [hud hideAnimated:YES
               afterDelay:KHideAfterDelayTime];
    }
    hud.completionBlock = completion;
    return hud;
}

感興趣的朋友,可以下載Demo查看具體方法實現,請戳:WBHUDManager

image

結語

選擇哪一款提示框架,都要看自己喜好了,因為我代碼水平有限,有些地方可能考慮的不夠完善,只能說是拋磚引玉吧,大神們可能有更好的封裝。要想基于這些框架自定義出自己需要風格的UI,還是要對框架提供的方法屬性有一定的了解。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 中國普洱茶網攜手拉佤布傣茶業(yè),共同“尋找真正的冰島味”,直擊冰島老寨古茶園,從鮮葉采摘到制作完成包裝入庫全程實拍跟...
    5ebc5e57260e閱讀 464評論 0 0
  • 從今天開始開啟十一小長假模式。早有一個不為人知的愿望:在父母75歲(但愿能到80歲)前帶他們游歷全中國,每年...
    筱竹華倩閱讀 321評論 0 1
  • 河漢清且淺,相去復幾許,盈盈一水間,脈脈不得語。 你走過的所有漆黑的路,必然是你選擇不去看清,黑夜亦或者黑暗,睜開...
    伴生少年閱讀 418評論 0 2

友情鏈接更多精彩內容