MBProgressHUD用法

MBProgressHUD版本号:0.9.2
以前用MBProgressHUD用得挺好的,基本上


- (void)showAnimated:(BOOL)animated whileExecutingBlock:(dispatch_block_t)block completionBlock:(void (^)())completion ;
这套方法上去就没事了,但是现在不行了,老是提示要用GCD
'showAnimated:whileExecutingBlock:completionBlock:' is deprecated: Use GCD directly.

没办法,只能去网上下载了:https://github.com/jdg/MBProgressHUD

看了一下Demo,还真改了,上代码吧,方法全在代码里

#import "ViewController.h"

#import "MBProgressHUD.h"


#define iOS7 [[[UIDevice currentDevice] systemVersion] floatValue]>=7.0

@interface ViewController ()<MBProgressHUDDelegate>


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    [self createView]; //创建各种HUD效果的点击按钮

}


//创建各种HUD效果的点击按钮

- (void)createView{


    

    NSArray *HudTypeArray =[NSArray arrayWithObjects:@"菊花怪",@"圆饼图",@"进度条",@"圆环",@"文字",@"自定义",nil];

    for (int i=0; i<HudTypeArray.count; i++) {

        UIButton *hudButton =[UIButton buttonWithType:UIButtonTypeCustom];

        hudButton.frame = CGRectMake(50, (50+20)*i+44+20, 100, 50);

        [hudButton setTitle:HudTypeArray[i] forState:UIControlStateNormal];

        [hudButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

        hudButton.backgroundColor =[UIColor orangeColor];

        hudButton.tag = 1000+i;

        [hudButton addTarget:self action:@selector(hudAction:) forControlEvents:UIControlEventTouchUpInside];

        [self.view addSubview:hudButton];

    }

}


//设置hud的提示文字、样式、代理等等

- (void)hudAction:(UIButton *)button {

    

    MBProgressHUD  *HUD =[MBProgressHUD showHUDAddedTo:self.view animated:YES]; //HUD效果添加哪个视图上

    HUD.label.text = @"正在努力加载中...";     //加载时的提示文字

    HUD.detailsLabel.text = @"猪猪侠在这";    //详细提示文字,跟UITableViewCelldetailTextLabel差不多

    HUD.delegate = self;        //我在这里设置,只为实现hudWasHidden方法,使hud消失时能清理对象,省出内存

    switch (button.tag-1000) {

        case 0:

            //菊花怪

            HUD.mode =MBProgressHUDModeIndeterminate;   //加载效果的显示样式

            

            break;

        case 1:

            //圆饼图

            HUD.mode = MBProgressHUDModeDeterminate;

            break;

        case 2:

            //进度条

            HUD.mode =MBProgressHUDModeDeterminateHorizontalBar;

            

            break;

        case 3:

            //圆环

            HUD.mode =MBProgressHUDModeAnnularDeterminate;


            break;

        case 4:

            //文字

            HUD.mode =MBProgressHUDModeText;


            break;

        case 5:

            //自定义

            HUD.mode =MBProgressHUDModeCustomView;


            break;

            

        default:

            break;

    }


     

    if (button.tag-1000==5) {

        [self custonView:HUD];  //自定义HUD效果

    }else{

        [self animationHud:HUD];    MBProgressHUD自带HUD效果

    }


}


//MBProgressHUD自带视图

- (void)animationHud:(MBProgressHUD *)hud {

    /**

     MBProgressHUD 0.92与先前某些版本很大的不同就包括:舍弃掉了某些方法:比如

     以前是这样玩的:

     

     [hud showAnimated:YES whileExecutingBlock:^{

     float progress = 0.0f;

     while (progress < 1.0f) {

     progress += 0.01f;

     hud.progress = progress;

     usleep(50000);

     }

     } completionBlock:^{

     [hud removeFromSuperview];

     hud = nil;

     }];

     现在不行了,得像下边这样玩:

                             |

                             |

                           * |  *

                            *  *

                             *

     **/


    dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), ^{

        float progress = 0.0f;

        while (progress < 1.0f) {

            progress += 0.01f;

            dispatch_async(dispatch_get_main_queue(), ^{

                [MBProgressHUD HUDForView:self.view].progress = progress;

            });

            usleep(50000);

        }

        

        dispatch_async(dispatch_get_main_queue(), ^{

            [hud hideAnimated:YES];

        });

    });

}

//自定义视图

- (void)custonView:(MBProgressHUD *)hud{

    NSMutableArray *contingentArray =[NSMutableArray array];

    for (int i=1; i<13; i++) {

        NSString *imgName =[NSString stringWithFormat:@"%d",i];

        UIImage *image;

        if (iOS7) {

            image =[[UIImage imageNamed:imgName] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

        }else{

            image =[UIImage imageNamed:imgName];

        }


        [contingentArray addObject:image];

    }


    UIImageView *hudImageView =[[UIImageView alloc] init];

    hudImageView.animationImages =contingentArray;  //UIImageView的动画组

    hudImageView.animationDuration= 1.0;        //每次动画的执行时间

    hudImageView.animationRepeatCount = 0;      //设置动画次数,0表示无限

    [hudImageView startAnimating];              //开始动画

    hud.customView = hudImageView;              //自定义的视图,将会展示为HUD效果

    

    [hud hideAnimated:YES afterDelay:10.0f];     //10s后隐藏HUD


}


#pragma mark -MBProgressHUDDelegate

- (void)hudWasHidden:(MBProgressHUD *)hud {

    [hud removeFromSuperview];

    hud = nil;

}


- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值