MBProgressHUD的简单封装

下面是我基于MBProgressHUD的封装

#import <Foundation/Foundation.h>
#import "MBProgressHUD.h"

@interface MBHUDHelper : NSObject


/**
 * 显示MBProgressHUD指示器
 * api parameters 说明
 * aTitle 标题
 * aMsg 信息
 * aImg 图片, 为nil时,只显示标题
 * d 延时消失时间, 为0时需要主动隐藏
 * blockE 执行的代码快
 * blockF 结束时的代码块
 * 执行时改变hub需要调用Common_MainFun(aFun)
 */
#define HIDDENMBProgressHUD [MBHUDHelper hiddenMBProgressHUD];
+ (void)hiddenMBProgressHUD;

+ (MBProgressHUD *)MBProgressHUD;

#define SHOWMBProgressHUD(aTitle, aMsg, aImg, aDimBG, aDelay) [MBHUDHelper showMBProgressHUDTitle:aTitle msg:aMsg image:aImg dimBG:aDimBG delay:aDelay];
+ (MBProgressHUD *)showMBProgressHUDTitle:(NSString *)aTitle
                                      msg:(NSString *)aMsg
                                    image:(UIImage *)aImg
                                    dimBG:(BOOL)dimBG
                                    delay:(float)d;

#define SHOWMBProgressHUDIndeterminate(aTitle, aMsg, aDimBG ,aDelay) [MBHUDHelper showMBProgressHUDModeIndeterminateTitle:aTitle msg:aMsg dimBG:aDimBG delay:aDelay];
+ (MBProgressHUD *)showMBProgressHUDModeIndeterminateTitle:(NSString *)aTitle
                                                       msg:(NSString *)aMsg
                                                     dimBG:(BOOL)dimBG
                                                      delay:(float)d;




#define SHOWMBProgressHUDCancelIndeterminate(aTitle, aMsg, aDimBG ,aDelay) [MBHUDHelper SHOWMBProgressHUDCancelIndeterminate:aTitle msg:aMsg dimBG:aDimBG delay:aDelay];
+ (MBProgressHUD *)SHOWMBProgressHUDCancelIndeterminate:(NSString *)aTitle
                                                       msg:(NSString *)aMsg
                                                     dimBG:(BOOL)dimBG
                                                     delay:(float)d;

+ (MBProgressHUD *)showMBProgressHUDTitle:(NSString *)aTitle
                                      msg:(NSString *)aMsg
                                    dimBG:(BOOL)dimBG
                             executeBlock:(void(^)(MBProgressHUD *hud))blockE
                              finishBlock:(void(^)(void))blockF;
+ (MBProgressHUD *)showMessag:(NSString *)message;

@end
#import "MBHUDHelper.h"


@implementation MBHUDHelper

static MBProgressHUD *HUD = nil;

+ (void)hiddenMBProgressHUD
{
    [HUD hide:YES];

    DownLoadManager.cancelView.hidden=YES;
}

+ (MBProgressHUD *)MBProgressHUD
{
    return HUD;
}

+ (MBProgressHUD *)showMBProgressHUDTitle:(NSString *)aTitle
                                      msg:(NSString *)aMsg
                                    image:(UIImage *)aImg
                                    dimBG:(BOOL)dimBG
                                    delay:(float)d
{
    UIViewController *vc = [self topMostController];

    if (vc == nil)
    {
        return nil;
    }

    if (nil == HUD)
    {
        HUD = [[MBProgressHUD alloc] initWithView:vc.view];
    }

    [vc.view addSubview:HUD];


    if (aTitle || aMsg)
    {
        HUD.mode = MBProgressHUDModeText;
        HUD.labelText = aTitle;
        HUD.detailsLabelText = aMsg;
    }

    if (aImg)
    {
        UIImageView *img = [[UIImageView alloc] initWithImage:aImg];
        HUD.customView = img;
        HUD.mode = MBProgressHUDModeCustomView;
    }

    HUD.removeFromSuperViewOnHide = YES;
    HUD.dimBackground = NO;
    HUD.userInteractionEnabled = !dimBG;
    [HUD show:YES];

    if (d > 0)
    {
        [HUD hide:YES afterDelay:d];
    }

    return HUD;
}

+ (MBProgressHUD *)showMBProgressHUDModeIndeterminateTitle:(NSString *)aTitle
                                                       msg:(NSString *)aMsg
                                                     dimBG:(BOOL)dimBG
                                                      delay:(float)d
{
    UIViewController *vc = [self topMostController];

    if (vc == nil)
    {
        return nil;
    }

    if (nil == HUD)
    {
        HUD = [[MBProgressHUD alloc] initWithView:vc.view];
    }

    [vc.view addSubview:HUD];


    HUD.mode = MBProgressHUDModeIndeterminate;
    HUD.labelText = aTitle;
    HUD.detailsLabelText = aMsg;
    HUD.removeFromSuperViewOnHide = YES;
    HUD.dimBackground = dimBG;
    [HUD show:YES];
    if (d > 0)
    {
        [HUD hide:YES afterDelay:d];
    }
    return HUD;
}


+ (MBProgressHUD *)SHOWMBProgressHUDCancelIndeterminate:(NSString *)aTitle
                                                    msg:(NSString *)aMsg
                                                  dimBG:(BOOL)dimBG
                                                  delay:(float)d{
    UIViewController *vc = [self topMostController];

    if (vc == nil)
    {
        return nil;
    }

    if (nil == HUD)
    {
        HUD = [[MBProgressHUD alloc] initWithView:vc.view];
    }

    [vc.view addSubview:HUD];


    if (nil == DownLoadManager.cancelView){
        DownLoadManager.cancelView=[[CancelView alloc] initWithFrame:CGRectMake(kDeviceWidth-80, 25, 80, 35)];

    }
    DownLoadManager.cancelView.hidden=NO;
    [vc.view addSubview:DownLoadManager.cancelView];

    HUD.mode = MBProgressHUDModeIndeterminate;
    HUD.labelText = aTitle;
    HUD.detailsLabelText = aMsg;
    HUD.removeFromSuperViewOnHide =NO;
    HUD.dimBackground = dimBG;
    [HUD show:YES];
    if (d > 0)
    {
        [HUD hide:YES afterDelay:d];
    }
    return HUD;
}



+ (MBProgressHUD *)showMBProgressHUDTitle:(NSString *)aTitle
                                      msg:(NSString *)aMsg
                                    dimBG:(BOOL)dimBG
                             executeBlock:(void(^)(MBProgressHUD *hud))blockE
                              finishBlock:(void(^)(void))blockF
{
    UIViewController *vc = [self topMostController];

    if (vc == nil)
    {
        return nil;
    }

    if (nil == HUD)
    {
        HUD = [[MBProgressHUD alloc] initWithView:vc.view];
    }

    [vc.view addSubview:HUD];

    HUD.labelText = aTitle;
    HUD.detailsLabelText = aMsg;
    HUD.removeFromSuperViewOnHide = YES;
    HUD.dimBackground = dimBG;

    [HUD showAnimated:YES whileExecutingBlock:^{
        blockE(HUD);
    } completionBlock:^{
        //[hud hide:YES];
        blockF();
    }];

    return HUD;
}
+ (MBProgressHUD *)showMessag:(NSString *)message 
{
    UIViewController *vc = [self topMostController];

    if (vc == nil)
    {
        return nil;
    }

    if (nil == HUD)
    {
        HUD = [[MBProgressHUD alloc] initWithView:vc.view];
    }

    [vc.view addSubview:HUD];


    HUD.detailsLabelText = message;
    HUD.detailsLabelFont = [UIFont systemFontOfSize:15];
    HUD.mode = MBProgressHUDModeText;
    HUD.removeFromSuperViewOnHide = YES;
    HUD.margin = 10.f;
    //hud.lineBreakMode = UILineBreakModeWordWrap;

    [HUD show:YES];
    [HUD hide:YES afterDelay:1.0f];
    return HUD;
}

@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
今天LemonKit给大家带来的是 柠檬泡泡控件 !!!!(给个英文名:LKBubble) 相信大家做iOS开发肯定都用户SVProgressHUD 或者 MBProgressHUD,但是觉没觉得很死板呢,可定制性不算是太高,而且动画略丑(个人觉得非常丑)。所以一气之下,自己胡乱写了一个,大家可以看看哦(上面有效果图),要是喜欢的朋友可以去Github给个星星~!!!这是个纯国产的透明指示层~ 本身LKBubble只是一个提示框,根据设置的LKBubbleInfo弹出框的样式来显示对应的效果,为了方便大家,我在工程里面直接写了三个自带的三个样式提示框,带有对号的成功提示,带有叉的错误提示,仿google的等待进度提示框,大家可以看一下代码,很容易就可以自定义一个带有动画效果的绚丽的提示框,也可以基于我提供的三个提示框LKBubbleInfo来快速的针对自己项目来修改主题风格哦! 可以自定义如下提示框: 1. 自定义单图的泡泡控件 2. 自定义多图帧动画的泡泡控件 3. 可以自己通过绘图绘制动画的泡泡控件(自带的三种提示框就是通过这种方式绘制的) 4. 只有标题的泡泡控件 5. 可以通过配置任意修改泡泡显示位置(屏幕上中下三个位置,当然还可以通过配置偏移量方式修改到任意位置!) 6. 图上标题下,图左标题右,要啥样就能变成啥样,随你的APP风格变化! 7. 所有的颜色均可配置,你项目什么风格,整体就什么风格! 8. 你自定义好的LKBubbleInfo,团队人无需其他复杂操作,即可调用你写的泡泡控件风格! 调用我直接封装的提示框非常方便,比如在UIViewController中可以直接调用下面代码弹出成功提示框: [self showRightWithTitle: @"添加成功" autoCloseTime: 2]; 没错,就一行代码,就可以啦! 更多的方便的功能大家可以自己摸索哦! 还是老样子,附件中只提供核心代码,还是建议大家去Github下载最新的代码,因为这个工程会越来越吸引人哦!!! 另外还得磨叽一遍:LemonKit的所有代码都会推出三个版本:iOS-OC , iOS-Swift , Android 马上就会推出Android的对应版本,后续可以去安卓巴士中找到安卓对应的版本哦!! 当然也可以直接去Github上下载~ 别忘啦,帮我点一下star!! 多谢 另外新建了个QQ群,大家要是使用过程中不懂得或者技术有问题可以加这个群来聊一聊,当然技术问题也可以哦! 欢迎大家加入: LemonKit QQ群:370157608 Github项目地址: Android版本:https://github.com/1em0nsOft/LemonKit4Android iOS OC版本:https://github.com/1em0nsOft/LemonKit4iOS iOS Swift版本:https://github.com/1em0nsOft/LemonKit4iOS-Swift

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值