MBProgressHUD用法
2016-05-12 15:26
267 查看
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 =
@"猪猪侠在这";
//详细提示文字,跟UITableViewCell的detailTextLabel差不多
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.
}
以前用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 =
@"猪猪侠在这";
//详细提示文字,跟UITableViewCell的detailTextLabel差不多
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.
}
相关文章推荐
- 深入理解JavaScript类数组
- 流程设计建模方法:流程的需求梳理之活动级别梳理
- 导入导出oracle数据库表的dmp文件
- QT绘图应用2:利用Qt绘制直方图和分位数图
- java 过滤掉特殊字符以及sql、shell命令
- NSURLSession学习笔记(三)Download Task
- 浅析Java编程中类和对象的定义
- 内部错误:无法加载 ABAP 报表 LVBRKF0I
- 使用密码登陆Amazon EC2而不是私有密钥
- NSURLConnection笔记
- 如何进行Android、IOS APP的自动化测试—东舟自动化测试解决方案
- iOS开发-Alpha,Hidden与Opaque区别
- margin-top导致子标签绑架父标签问题
- Jaxp解析XML的基本方法
- Jaxp解析XML的基本方法
- Jaxp解析XML的基本方法
- Jaxp解析XML的基本方法
- iOS开源库源码解析之AsyncDispalyKit
- 网络流相关
- 表空间22