// // ViewController.m // MBProgressHUD // // Created by City--Online on 15/6/15. // Copyright (c) 2015年 City--Online. All rights reserved. // #import "ViewController.h" #import "MBProgressHUD.h" @interface ViewController ()<MBProgressHUDDelegate,NSURLConnectionDataDelegate> @property(nonatomic,strong) MBProgressHUD *hud; @property(nonatomic,assign) long long expectedLength; @property(nonatomic,assign) long long currentLength; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //普通提示框 UIButton *simpleBtn=[UIButton buttonWithType:UIButtonTypeSystem]; [simpleBtn setTitle:@"普通" forState:UIControlStateNormal]; [simpleBtn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; simpleBtn.frame=CGRectMake(20, 70, 100, 100); simpleBtn.backgroundColor=[UIColor redColor]; simpleBtn.tag=10001; [self.view addSubview:simpleBtn]; //显示进度 UIButton *progressBtn=[UIButton buttonWithType:UIButtonTypeSystem]; [progressBtn setTitle:@"进度" forState:UIControlStateNormal]; [progressBtn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; progressBtn.frame=CGRectMake(130, 70, 100, 100); progressBtn.backgroundColor=[UIColor redColor]; progressBtn.tag=10002; [self.view addSubview:progressBtn]; //自定义视图 UIButton *customBtn=[UIButton buttonWithType:UIButtonTypeSystem]; [customBtn setTitle:@"自定义" forState:UIControlStateNormal]; [customBtn addTarget:self action:@selector(customClick:) forControlEvents:UIControlEventTouchUpInside]; customBtn.frame=CGRectMake(20, 180, 100, 100); customBtn.backgroundColor=[UIColor redColor]; customBtn.tag=10003; [self.view addSubview:customBtn]; //Window视图 UIButton *windowBtn=[UIButton buttonWithType:UIButtonTypeSystem]; [windowBtn setTitle:@"Window" forState:UIControlStateNormal]; [windowBtn addTarget:self action:@selector(windowClick:) forControlEvents:UIControlEventTouchUpInside]; windowBtn.frame=CGRectMake(130, 180, 100, 100); windowBtn.backgroundColor=[UIColor redColor]; windowBtn.tag=10004; [self.view addSubview:windowBtn]; //多提示框 UIButton *mixBtn=[UIButton buttonWithType:UIButtonTypeSystem]; [mixBtn setTitle:@"多提示框" forState:UIControlStateNormal]; [mixBtn addTarget:self action:@selector(mixClick:) forControlEvents:UIControlEventTouchUpInside]; mixBtn.frame=CGRectMake(20, 290, 100, 100); mixBtn.backgroundColor=[UIColor redColor]; mixBtn.tag=10004; [self.view addSubview:mixBtn]; //多提示框 UIButton *connectionBtn=[UIButton buttonWithType:UIButtonTypeSystem]; [connectionBtn setTitle:@"Connection" forState:UIControlStateNormal]; [connectionBtn addTarget:self action:@selector(connectionClick:) forControlEvents:UIControlEventTouchUpInside]; connectionBtn.frame=CGRectMake(130, 290, 100, 100); connectionBtn.backgroundColor=[UIColor redColor]; connectionBtn.tag=10004; [self.view addSubview:connectionBtn]; } //普通 -(void)btnClick:(id)sender { UIButton *btn=(UIButton *)sender; _hud=[[MBProgressHUD alloc]initWithView:self.view]; _hud.delegate=self; _hud.labelText=@"Loading"; _hud.detailsLabelText=@"updating data"; _hud.square=YES; //默认 _hud.mode=MBProgressHUDModeIndeterminate; if (btn.tag==10002) { _hud.mode=MBProgressHUDModeDeterminateHorizontalBar; } [self.view addSubview:_hud]; [_hud showAnimated:YES whileExecutingBlock:^{ if (btn.tag==10001) { sleep(3); } else if(btn.tag==10002) { [self myProgressTask]; } } completionBlock:^{ [_hud removeFromSuperview]; }]; } //自定义视图 -(void)customClick:(id)sender { _hud = [[MBProgressHUD alloc] initWithView:self.view]; [self.view addSubview:_hud]; // 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"]]; // Set custom view mode _hud.mode = MBProgressHUDModeCustomView; _hud.delegate = self; _hud.labelText=@"Loading"; _hud.detailsLabelText=@"updating data"; _hud.square=YES; [_hud show:YES]; [_hud hide:YES afterDelay:3]; } //window视图 -(void)windowClick:(id)sender { _hud=[[MBProgressHUD alloc]initWithWindow:self.view.window]; [self.view.window addSubview:_hud]; _hud.delegate=self; _hud.labelText=@"Loading"; [_hud showWhileExecuting:@selector(task) onTarget:self withObject:nil animated:YES]; } //多提示框 -(void)mixClick:(id)sender { _hud = [[MBProgressHUD alloc] initWithView:self.view]; [self.view addSubview:_hud]; _hud.delegate = self; _hud.labelText = @"Connecting"; // _hud.minSize = CGSizeMake(135.f, 135.f); [_hud showWhileExecuting:@selector(mixedTask) onTarget:self withObject:nil animated:YES]; } -(void)connectionClick:(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]; _hud=[MBProgressHUD showHUDAddedTo:self.view animated:YES]; _hud.delegate=self; _hud.mode=MBProgressHUDModeDeterminate; } -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { _expectedLength=MAX(response.expectedContentLength, 1); _currentLength=0; } -(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"]]; _hud.mode=MBProgressHUDModeCustomView; [_hud hide:YES afterDelay:2]; } -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { [_hud hide:YES]; } //显示进度 - (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)task { sleep(3); } -(void)mixedTask { _hud.mode=MBProgressHUDModeIndeterminate; _hud.labelText=@"Progressing"; float progress=0.0f; while (progress<1.0f) { progress+=0.1f; _hud.progress=progress; usleep(5000); } // 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; _hud.mode = MBProgressHUDModeCustomView; _hud.labelText = @"Completed"; sleep(2); } - (void)hudWasHidden:(MBProgressHUD *)hud { // Remove HUD from screen when the HUD was hidded [_hud removeFromSuperview]; _hud=nil; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
时间: 2024-10-25 01:12:21