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还是有些变化的:

/** < 创建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,还是要对框架提供的方法属性有一定的了解。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容

  • 中国普洱茶网携手拉佤布傣茶业,共同“寻找真正的冰岛味”,直击冰岛老寨古茶园,从鲜叶采摘到制作完成包装入库全程实拍跟...
    5ebc5e57260e阅读 398评论 0 0
  • 从今天开始开启十一小长假模式。早有一个不为人知的愿望:在父母75岁(但愿能到80岁)前带他们游历全中国,每年...
    筱竹华倩阅读 244评论 0 1
  • 河汉清且浅,相去复几许,盈盈一水间,脉脉不得语。 你走过的所有漆黑的路,必然是你选择不去看清,黑夜亦或者黑暗,睁开...
    伴生少年阅读 350评论 0 2