第三方进度显示器MBProgressHUD的使用
来源:互联网 发布:钻展数据分析 编辑:程序博客网 时间:2024/05/01 13:58
总结:设置一个全局的hud,创建和添加到View上,设置属性,适时的show和隐藏!
1.定义一个全局的hud
{ MBProgressHUD *_HUD; long long expectedLength; long long currentLength;}
2创建和设置hud
#pragma mark - Actions//1- (IBAction)showSimple:(id)sender { // The hud will dispable all input on the view (use the higest view possible in the view hierarchy) HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; [self.navigationController.view addSubview:HUD]; // Regiser for HUD callbacks so we can remove it from the window at the right time HUD.delegate = self; // Show the HUD while the provided method executes in a new thread [HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];}//2- (IBAction)showWithLabel:(id)sender { HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; [self.navigationController.view addSubview:HUD]; HUD.delegate = self; HUD.labelText = @"Loading"; [HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];}//3- (IBAction)showWithDetailsLabel:(id)sender { HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; [self.navigationController.view addSubview:HUD]; HUD.delegate = self; HUD.labelText = @"Loading"; HUD.detailsLabelText = @"updating data"; HUD.square = YES; [HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];}//4- (IBAction)showWithLabelDeterminate:(id)sender { HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; [self.navigationController.view addSubview:HUD]; // Set determinate mode HUD.mode = MBProgressHUDModeDeterminate; HUD.delegate = self; HUD.labelText = @"Loading"; // myProgressTask uses the HUD instance to update progress [HUD showWhileExecuting:@selector(myProgressTask) onTarget:self withObject:nil animated:YES];}//5- (IBAction)showWIthLabelAnnularDeterminate:(id)sender { HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; [self.navigationController.view addSubview:HUD]; // Set determinate mode HUD.mode = MBProgressHUDModeAnnularDeterminate; HUD.delegate = self; HUD.labelText = @"Loading"; // myProgressTask uses the HUD instance to update progress [HUD showWhileExecuting:@selector(myProgressTask) onTarget:self withObject:nil animated:YES];}//6- (IBAction)showWithLabelDeterminateHorizontalBar:(id)sender { HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; [self.navigationController.view addSubview:HUD]; // Set determinate bar mode HUD.mode = MBProgressHUDModeDeterminateHorizontalBar; HUD.delegate = self; // myProgressTask uses the HUD instance to update progress [HUD showWhileExecuting:@selector(myProgressTask) onTarget:self withObject:nil animated:YES];}//7- (IBAction)showWithCustomView:(id)sender { HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; [self.navigationController.view addSubview:HUD]; // The sample image is based on the work by http://www.pixelpressicons.com, http://creativecommons.org/licenses/by/2.5/ca/ // Make the customViews 37 by 37 pixels for best results (those are the bounds of the build-in progress indicators) 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];}//8- (IBAction)showWithLabelMixed:(id)sender { HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; [self.navigationController.view addSubview:HUD]; HUD.delegate = self; HUD.labelText = @"Connecting"; HUD.minSize = CGSizeMake(135.f, 135.f); [HUD showWhileExecuting:@selector(myMixedTask) onTarget:self withObject:nil animated:YES];}//9- (IBAction)showUsingBlocks:(id)sender {#if NS_BLOCKS_AVAILABLE MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; [self.navigationController.view addSubview:hud]; hud.labelText = @"With a block"; [hud showAnimated:YES whileExecutingBlock:^{ [self myTask]; } completionBlock:^{ [hud removeFromSuperview]; [hud release]; }];#endif}//10- (IBAction)showOnWindow:(id)sender { // The hud will dispable all input on the window HUD = [[MBProgressHUD alloc] initWithView:self.view.window]; [self.view.window addSubview:HUD]; HUD.delegate = self; HUD.labelText = @"Loading"; [HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];}//11- (IBAction)showURL:(id)sender { NSURL *URL = [NSURL URLWithString:@"http://a1408.g.akamai.net/5/1408/1388/2005110403/1a1a1ad948be278cff2d96046ad90768d848b41947aa1986/sample_iPod.m4v.zip"]; NSURLRequest *request = [NSURLRequest requestWithURL:URL]; NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; [connection start]; [connection release]; HUD = [[MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES] retain]; HUD.delegate = self;}//12- (IBAction)showWithGradient:(id)sender { HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; [self.navigationController.view addSubview:HUD]; HUD.dimBackground = YES; // Regiser for HUD callbacks so we can remove it from the window at the right time HUD.delegate = self; // Show the HUD while the provided method executes in a new thread [HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];}//13- (IBAction)showTextOnly:(id)sender { MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES]; // Configure for text only and offset down hud.mode = MBProgressHUDModeText; hud.labelText = @"Some message..."; hud.margin = 10.f; hud.removeFromSuperViewOnHide = YES; [hud hide:YES afterDelay:3];}//14- (IBAction)showWithColor:(id)sender{ HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; [self.navigationController.view addSubview:HUD]; // Set the hud to display with a color HUD.color = [UIColor colorWithRed:0.23 green:0.50 blue:0.82 alpha:0.90]; HUD.delegate = self; [HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES]; }
//3.设置睡眠时间
#pragma mark - Execution code- (void)myTask { // Do something usefull in here instead of sleeping ... sleep(1);}- (void)myProgressTask { // This just increases the progress indicator in a loop float progress = 0.0f; while (progress < 1.0f) { progress += 0.01f; HUD.progress = progress; usleep(50000); }}- (void)myMixedTask { // Indeterminate mode sleep(2); // Switch to determinate mode HUD.mode = MBProgressHUDModeDeterminate; HUD.labelText = @"Progress"; float progress = 0.0f; while (progress < 1.0f) { progress += 0.01f; HUD.progress = progress; usleep(50000); } // Back to indeterminate mode HUD.mode = MBProgressHUDModeIndeterminate; HUD.labelText = @"Cleaning up"; sleep(2); // UIImageView is a UIKit class, we have to initialize it on the main thread __block UIImageView *imageView; dispatch_sync(dispatch_get_main_queue(), ^{ UIImage *image = [UIImage imageNamed:@"37x-Checkmark.png"]; imageView = [[UIImageView alloc] initWithImage:image]; }); HUD.customView = [imageView autorelease]; HUD.mode = MBProgressHUDModeCustomView; HUD.labelText = @"Completed"; sleep(2);}
//4.NSURLConnection代理方法
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { expectedLength = MAX([response expectedContentLength], 1); currentLength = 0; HUD.mode = MBProgressHUDModeDeterminate;}- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { currentLength += [data length]; HUD.progress = currentLength / (float)expectedLength;}- (void)connectionDidFinishLoading:(NSURLConnection *)connection { HUD.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"37x-Checkmark.png"]] autorelease]; HUD.mode = MBProgressHUDModeCustomView; [HUD hide:YES afterDelay:2];}- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { [HUD hide:YES];}
5.hud的代理方法
#pragma mark - MBProgressHUDDelegate- (void)hudWasHidden:(MBProgressHUD *)hud { // Remove HUD from screen when the HUD was hidded [HUD removeFromSuperview]; [HUD release]; HUD = nil;}
0 0
- 第三方进度显示器MBProgressHUD的使用
- MBProgressHUD 第三方的使用
- iOS 第三方MBProgressHUD使用的问题
- IOS 第三方库 MBProgressHUD的基本使用
- IOS 第三方库之-MBProgressHUD的使用详解
- iOS 第三方框架-MBProgressHUD的简单使用
- IOS 第三方库之-MBProgressHUD的使用详解
- IOS MBProgressHUD第三方库的封装
- 第三方(MBProgressHUD)
- 第三方库之MBProgressHUD
- ios第三方库MBProgressHUD
- 第三方框架 MBProgressHUD 指示器
- MBProgressHUD 第三方详解学习
- MBProgressHUD特效(菊花第三方)
- iOS 第三方库 - MBProgressHUD
- iOS 第三方框架-MBProgressHUD
- iOS 第三方框架-MBProgressHUD
- iOS 第三方框架-MBProgressHUD
- windows xp开机提示系统资源不够 无法完成api
- 构建微服务-第一章-什么是微服务_004部署和组织协调
- Linux查看真实内存使用率
- 如何创建一个android的react-native组件(二)
- Unix网络编程(一):套接字地址结构
- 第三方进度显示器MBProgressHUD的使用
- XSS HTTP-only
- Java定时任务Timer的使用
- Linux 压缩命令
- 【概念解析】b、B、k、K、Ki
- HDOJ 3466 Proud Merchants
- Jmeter性能测试,MySQL JDBC request
- MVC开发经验笔记
- FATE (HDU_2159) 二维完全背包 + 二进制优化