上次说到了网络请求AFN,那么我们在网络请求的时候,等待期间,为了让用户不认为是卡死或程序出错,一般都会放一个菊花加载,系统有一个菊花加载类叫UIProgressHUD.但是我今天要说的是一个替代它的第三方,叫做:MBProgressHUD.MBProgressHUD不光加载效果多,而且使用简单,便捷.github上有下载地址
下载地址是: http://github.com/matej/MBProgressHUD
先下载MBProgressHUD.h和.m文件,拖入工程。
以下是代码:(先在.h文件里定义 MBProgressHUD *HUD;)
//方式1.直接在View上show HUD = [[MBProgressHUD showHUDAddedTo:self.view animated:YES] retain]; HUD.delegate = self; //常用的设置 //小矩形的背景色 HUD.color = [UIColor clearColor];//这儿表示无背景 //显示的文字 HUD.labelText = @"Test"; //细节文字 HUD.detailsLabelText = @"Test detail"; //是否有庶罩 HUD.dimBackground = YES; [HUD hide:YES afterDelay:2]; //只显示文字 MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; hud.mode = MBProgressHUDModeText; hud.labelText = @"Some message..."; hud.margin = 10.f; hud.yOffset = 150.f; hud.removeFromSuperViewOnHide = YES; [hud hide:YES afterDelay:3];
//方式2.initWithView //use block HUD = [[MBProgressHUD alloc] initWithView:self.view]; [self.view addSubview:HUD]; HUD.labelText = @"Test"; [HUD showAnimated:YES whileExecutingBlock:^{ NSLog(@"%@",@"do somethings...."); [self doTask]; } completionBlock:^{ [HUD removeFromSuperview]; [HUD release]; }]; //圆形进度条 HUD = [[MBProgressHUD alloc] initWithView:self.view]; [self.view addSubview:HUD]; HUD.mode = MBProgressHUDModeAnnularDeterminate; HUD.delegate = self; HUD.labelText = @"Loading"; [HUD showWhileExecuting:@selector(myProgressTask) onTarget:self withObject:nil animated:YES]; //自定义view HUD = [[MBProgressHUD alloc] initWithView:self.view]; HUD.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"37x-Checkmark.png"]] autorelease]; // Set custom view mode HUD.mode = MBProgressHUDModeCustomView; HUD.delegate = self; HUD.labelText = @"Completed"; [HUD show:YES]; [HUD hide:YES afterDelay:3];需要注意的是,MBprogressHUD的代理方法
#pragma mark HUD的代理方法,关闭HUD时执行 -(void)hudWasHidden:(MBProgressHUD *)hud { [hud removeFromSuperview]; [hud release]; hud = nil; }