//
// 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
![](http://images0.cnblogs.com/blog2015/733213/201506/151355109821544.jpg?x-oss-process=image/resize,w_1400/format,webp)
![](http://images0.cnblogs.com/blog2015/733213/201506/151355215766708.jpg?x-oss-process=image/resize,w_1400/format,webp)
![](http://images0.cnblogs.com/blog2015/733213/201506/151355339041842.jpg?x-oss-process=image/resize,w_1400/format,webp)
![](http://images0.cnblogs.com/blog2015/733213/201506/151355481235131.jpg?x-oss-process=image/resize,w_1400/format,webp)
![](http://images0.cnblogs.com/blog2015/733213/201506/151355561853267.jpg?x-oss-process=image/resize,w_1400/format,webp)
![](http://images0.cnblogs.com/blog2015/733213/201506/151356038736919.jpg?x-oss-process=image/resize,w_1400/format,webp)