更新日志
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,還是要對框架提供的方法屬性有一定的了解。