MBProgressHUD的封装

1.创建一个MBProgressHUD的Category分类

屏幕快照 2019-11-28 下午1.45.12.png

2.在.h中直接写入

#import 

NS_ASSUME_NONNULL_BEGIN

@interface MBProgressHUD (LC)
#pragma mark - 显示在window

//window显示文字
+ (void)showInWindowMessage:(NSString *)message;

//window显示文字延时
+ (void)showInWindowMessage:(NSString *)message delayTime:(NSInteger)time;

//window加载
+ (void)showInWindowActivityWithMessage:(NSString *)message;

//window加载延时
+ (void)showInWindowActivityWithMessage:(NSString *)message delayTime:(NSInteger)time;

//window自定义图片
+ (void)showInWindowCustomImage:(NSString *)imageName message:(NSString *)message;

#pragma mark - 显示在view
//view显示文字
+ (void)showInViewMessage:(NSString *)message;

//view显示文字延时
+ (void)showInViewMessage:(NSString *)message delayTime:(NSInteger)time;

//view加载
+ (void)showInViewActivityWithMessage:(NSString *)message;

//view加载延时
+ (void)showInViewActivityWithMessage:(NSString *)message delayTime:(NSInteger)time;

//view自定义图片
+ (void)showInViewCustomImage:(NSString *)imageName message:(NSString *)message;

#pragma mark - 操作结果提示
//成功提示
+ (void)showSuccessMessage:(NSString *)message;

//失败提示
+ (void)showFailMessage:(NSString *)message;

//警告提示
+ (void)showWarnMessage:(NSString *)message;

//信息提示
+ (void)showInfoMessage:(NSString *)message;

//显示进度条
+ (void)showProgressHudWithMessage:(NSString *)message;

//显示进度条网络请求
+ (void)showHUD;
#pragma mark - 隐藏
//隐藏
+ (void)hideHUD;

@end

3.在.m中直接写入

#import "MBProgressHUD+LC.h"
#import "AppDelegate.h"

//设置RGB颜色
#define ZKRGBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]//用10进制表示颜色,例如(255,255,255)黑色

#define SCREEN_WIDTH  [UIScreen mainScreen].bounds.size.width
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height

@implementation MBProgressHUD (LC)
//window显示文字
+ (void)showInWindowMessage:(NSString *)message {
    [self showMessage:message delayTime:1.0 isWindow:YES];
}

//window显示文字延时
+ (void)showInWindowMessage:(NSString *)message delayTime:(NSInteger)time {
    [self showMessage:message delayTime:time isWindow:YES];
}

//window加载
+ (void)showInWindowActivityWithMessage:(NSString *)message {
    [self showActivityMessage:message isWindow:YES delayTime:1.0];
}

//window加载延时
+ (void)showInWindowActivityWithMessage:(NSString *)message delayTime:(NSInteger)time {
    [self showActivityMessage:message isWindow:YES delayTime:time];
}

//window自定义图片
+ (void)showInWindowCustomImage:(NSString *)imageName message:(NSString *)message {
    [self showCustomImage:imageName message:message isWindow:YES];
}

#pragma mark - 显示在view
//view显示文字
+ (void)showInViewMessage:(NSString *)message {
    [self showMessage:message delayTime:1.0 isWindow:NO];
}

//view显示文字延时
+ (void)showInViewMessage:(NSString *)message delayTime:(NSInteger)time {
    [self showMessage:message delayTime:time isWindow:NO];
}

//view加载
+ (void)showInViewActivityWithMessage:(NSString *)message {
    [self showActivityMessage:message isWindow:NO delayTime:1.0];
}

//view加载延时
+ (void)showInViewActivityWithMessage:(NSString *)message delayTime:(NSInteger)time {
    [self showActivityMessage:message isWindow:NO delayTime:time];
}

//view自定义图片
+ (void)showInViewCustomImage:(NSString *)imageName message:(NSString *)message {
    [self showCustomImage:imageName message:message isWindow:NO];
}

#pragma mark - 操作结果提示
//成功提示
+ (void)showSuccessMessage:(NSString *)message {
    [self showCustomImage:@"MBHUD_Success" message:message];
}

//失败提示
+ (void)showFailMessage:(NSString *)message {
    [self showCustomImage:@"MBHUD_Error" message:message];
}

//警告提示
+ (void)showWarnMessage:(NSString *)message {
    [self showCustomImage:@"MBHUD_Warn" message:message];
}

//信息提示
+ (void)showInfoMessage:(NSString *)message {
    [self showCustomImage:@"MBHUD_Info" message:message];
}

//默认显示在window
+ (void)showCustomImage:(NSString *)imageName message:(NSString *)message {
    [self showCustomImage:imageName message:message isWindow:YES];
}

+ (void)showProgressHudWithMessage:(NSString *)message {
    MBProgressHUD *hud = [self createMBProgerssHUDWithMessage:message isWindow:YES];
    hud.mode = MBProgressHUDModeIndeterminate;
    hud.bezelView.color = [UIColor  blackColor];
    hud.contentColor = [UIColor whiteColor];
}
//显示进度条网络请求
+ (void)showHUD{
    MBProgressHUD *hud = [self createMBProgerssHUDWithMessage:@"正在请求请稍后" isWindow:YES];
    hud.mode = MBProgressHUDModeIndeterminate;
    hud.bezelView.color = [UIColor  blackColor];
    hud.contentColor = [UIColor whiteColor];
}
#pragma mark - 隐藏
//隐藏
+ (void)hideHUD {
    UIView *windowView = (UIView *)[UIApplication sharedApplication].delegate.window;
    [self hideHUDForView:windowView animated:YES];
    [self hideHUDForView:[self currentUIViewController].view animated:YES];
}

#pragma mark - Private
/**
 加载动态图片
 */
+ (void)showActivityMessage:(NSString*)message
                   isWindow:(BOOL)isWindow
                  delayTime:(NSInteger)delayTime {
    
    MBProgressHUD *hud  = [self createMBProgerssHUDWithMessage:message isWindow:isWindow];
    hud.mode = MBProgressHUDModeIndeterminate;
    hud.activityIndicatorColor = [UIColor whiteColor];
    hud.label.textColor=[UIColor whiteColor];
    hud.bezelView.color = [UIColor  blackColor];
    hud.square = YES;
    if (delayTime > 0) {
        [hud hideAnimated:YES afterDelay:delayTime];
    }
  
}

/**
 自定义图片
 */
+ (void)showCustomImage:(NSString *)imageName
                message:(NSString *)message
               isWindow:(BOOL)isWindow {
    
    MBProgressHUD *hud = [self createMBProgerssHUDWithMessage:message isWindow:isWindow];
    hud.mode = MBProgressHUDModeCustomView;
    hud.square = YES;
    hud.contentColor = [UIColor whiteColor];
    hud.bezelView.backgroundColor = ZKRGBColor(30, 30, 30);
    hud.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageName]];
    hud.animationType = MBProgressHUDAnimationZoomOut;
    [hud hideAnimated:YES afterDelay:0.7];
}

/**
 显示信息延时
 */
+ (void)showMessage:(NSString *)message
          delayTime:(NSInteger)delayTime
           isWindow:(BOOL)isWindow {
    
    MBProgressHUD *hud = [self createMBProgerssHUDWithMessage:nil isWindow:isWindow];
    hud.detailsLabel.text=message;
    hud.mode = MBProgressHUDModeText;
    hud.detailsLabel.textColor = [UIColor whiteColor];
    hud.bezelView.backgroundColor =ZKRGBColor(30, 30, 30);
    hud.detailsLabel.font = [UIFont systemFontOfSize:15.0f];
    //设置大小
    hud.minSize = CGSizeMake(200,50);
    [hud hideAnimated:YES afterDelay:delayTime];
}

/**
 显示信息
 */
+ (MBProgressHUD *)createMBProgerssHUDWithMessage:(NSString *)message isWindow:(BOOL)isWindow {
    
    UIView *view = isWindow ? (UIView *)[UIApplication sharedApplication].delegate.window : [self currentUIViewController].view;
    MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];
    hud.label.textColor = ZKRGBColor(255, 255, 255);
    hud.label.font = [UIFont systemFontOfSize:12.0f];
    hud.label.text = message;
    hud.removeFromSuperViewOnHide = YES;
    return hud;
}

//获取屏幕当前显示的ViewController
+ (UIViewController *)currentUIViewController {
    UIViewController *superViewController = [[self class] currentWindowViewController];
    if ([superViewController isKindOfClass:[UITabBarController class]]) {
        
        UIViewController *tabSelectVC = ((UITabBarController *)superViewController).selectedViewController;
        if ([tabSelectVC isKindOfClass:[UINavigationController class]]) {
            return ((UINavigationController *)tabSelectVC).viewControllers.lastObject;
        }
        
    }else if ([superViewController isKindOfClass:[UINavigationController class]]) {
        return ((UINavigationController *)superViewController).viewControllers.lastObject;
    }
    return superViewController;
}

+ (UIViewController *)currentWindowViewController {
    UIViewController *viewController = nil;
    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
    
    if (appDelegate.window.windowLevel != UIWindowLevelNormal) {
        NSArray *windows = [[UIApplication sharedApplication] windows];
        for (UIWindow *tempWindow in windows) {
            if (tempWindow.windowLevel == UIWindowLevelNormal) {
                appDelegate.window = tempWindow;
                break;
            }
        }
    }
    UIView *frontView = [[appDelegate.window subviews]objectAtIndex:0];
    id nextResponder = [frontView nextResponder];
    if ([nextResponder isKindOfClass:[UIViewController class]]) {
        viewController = nextResponder;
    }else {
        viewController = appDelegate.window.rootViewController;
    }
    return viewController;
}

4.圆形进度条

- (void)CircularButtonAction{

    self.HUD  =  [[MBProgressHUD alloc]initWithView:self.view];
    [self.view addSubview:self.HUD];
    self.HUD.tag=1000;
    self.HUD.mode = MBProgressHUDModeDeterminateHorizontalBar;
    self.HUD.label.text = @"Downloading...";
    self.HUD.square = YES;
    self.HUD.contentColor=[UIColor redColor];
    [self.HUD showAnimated:YES];

    self.updatePerTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self
                                                         selector:@selector(updateTrancodePercentage:) userInfo:nil repeats:YES];
}
- (void)updateTrancodePercentage:(NSTimer *)theTimer {
    if (self.HUD != nil) {
        static  float i = 0;
        i++;
        self.HUD.progress = i/100;
        if (i<20) {
            self.HUD.label.text = [NSString stringWithFormat:@"当前进度%.0f%%",i];
        }else{
            [self.HUD hideAnimated:YES];
        }
    }
}

5 自定义动图

- (void)CustomButtonAction{
    //自定义view
    MBProgressHUD*HUD = [[MBProgressHUD alloc] initWithView:self.view];
    //取消背景框
    HUD.bezelView.color = [UIColor whiteColor];
    [self.view addSubview:HUD];

    UIImageView *images = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 200, 300)];
    NSMutableArray *imageArray = [[NSMutableArray alloc]init];
    for(int i = 1; i < 4 ; i++){
        [imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"%d.ty",i]]];
    }
    images.animationImages = imageArray;
    images.animationDuration = 0.7;
    // 开始播放
    [images startAnimating];
    //自定义
    HUD.mode = MBProgressHUDModeCustomView;
    HUD.delegate = self;
    HUD.customView = images;
    [HUD showAnimated:YES];
    //延迟
    [HUD hideAnimated:YES afterDelay:2];

}

你可能感兴趣的:(MBProgressHUD的封装)