图片描述

一、原起

我为什么要对MBProgressHUD进行二次封装?今年新找的这份工作,项目的创建的时间比较早了,2014年创建的项目,项目中现在使用的一些操作提示,既然还是我刚开始从事iOS开发工作的时候就用到的开源的第三方toast。可以说这个开源库的年龄比我的工作年龄都长了,现在早都过时了,而且它的样式不好看,跟MBProgressHUD差远了。所以决定对MBProgressHUD进行二次封装,产出demo,决心说服产品进行替换。

二、XBLoadingKit的使用

XBLoadingKit主要封装了常用的几种提示,包括成功失败警告loading长文本消息

1、使用方法


- (void)showOperationHudWithStatus:(TipStatus)tipStatus{
    
    switch (tipStatus) {
        case operation_success_status:
            [MBProgressHUD showSuccess:@"操作成功的提示" toView:self.view]; //成功的提示
            break;
        case operation_fail_status:
            [MBProgressHUD showError:@"操作失败的提示" toView:self.view]; //失败提示
            break;
        case operation_warning_status:
            [MBProgressHUD showWarning:@"操作遇到了警告" toView:self.view]; //警告提示
            break;
            
        default:
            break;
    }
}

//网络加载时的loading
- (void)networkLoading{
    
    [MBProgressHUD showMessage:@"loading..." toView:self.view];
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC);
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
        // Do something...
        [MBProgressHUD hideHUDForView:self.view animated:YES];
    });
}

//显示长文本提示
- (void)showLongMessage{
    
    [MBProgressHUD showDetailMessage:@"寂寞空庭春欲晚,梨花满地不开门,昨夜雨疏风骤" toView:self.view delay:2.0];
}

2、样式

XBLoadingKit提供了两种样式。

  • 灰白色背景(icon和提示文字是灰色)
  • 黑色背景(icon和提示文字是白色)
/**
 hud的样式

 - gray_background_style: 灰色背景
 - dim_background_style: 黑色背景
 */
typedef NS_ENUM(NSInteger, CustomHudStyle) {
    
    gray_background_style = 0,
    dim_background_style,
};

如果不进行设置,默认使用的是灰色背景。
可以通过LoadingStyleManager这个类提供的方法进行样式的修改,提示hud的显示时长的修改。

修改样式的代码示例:

[[LoadingStyleManager sharedInstance] setHudStyle:dim_background_style];

提示显示的时长默认是2s,可以自己根据需要进行修改。
修改提示显示的时长:

[[LoadingStyleManager sharedInstance] setHudShowTime:1.5]; //设置提示显示的时长

效果展示:
图片描述

三、特别说明

  1. 提示所使用的三个图标都放在了resource目录下,是从之前的项目中找出来的,只有@2x图标,有需要使用的同学,请找设计师生成对应的@3x图标。
  2. 如果需要使用其他样式的提示,请根据MBProgressHUD的demo自己进行封装
  3. demo传送门,欢迎下载使用,提出意见。

蓝光95
210 声望16 粉丝

一名从业多年的软件开发者,做过5年的iOS开发,做过一年的react-native开发,有iOS性能优化经验,IM开发经验,会小程序的开发,现在在昆明从事移动前端开发的工作。