//
//  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(, , , );
    simpleBtn.backgroundColor=[UIColor redColor];
    simpleBtn.tag=;
    [self.view addSubview:simpleBtn];

    //显示进度
    UIButton *progressBtn=[UIButton buttonWithType:UIButtonTypeSystem];
    [progressBtn setTitle:@"进度" forState:UIControlStateNormal];
    [progressBtn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
    progressBtn.frame=CGRectMake(, , , );
    progressBtn.backgroundColor=[UIColor redColor];
    progressBtn.tag=;
    [self.view addSubview:progressBtn];

    //自定义视图
    UIButton *customBtn=[UIButton buttonWithType:UIButtonTypeSystem];
    [customBtn setTitle:@"自定义" forState:UIControlStateNormal];
    [customBtn addTarget:self action:@selector(customClick:) forControlEvents:UIControlEventTouchUpInside];
    customBtn.frame=CGRectMake(, , , );
    customBtn.backgroundColor=[UIColor redColor];
    customBtn.tag=;
    [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(, , , );
    windowBtn.backgroundColor=[UIColor redColor];
    windowBtn.tag=;
    [self.view addSubview:windowBtn];

    //多提示框
    UIButton *mixBtn=[UIButton buttonWithType:UIButtonTypeSystem];
    [mixBtn setTitle:@"多提示框" forState:UIControlStateNormal];
    [mixBtn addTarget:self action:@selector(mixClick:) forControlEvents:UIControlEventTouchUpInside];
    mixBtn.frame=CGRectMake(, , , );
    mixBtn.backgroundColor=[UIColor redColor];
    mixBtn.tag=;
    [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(, , , );
    connectionBtn.backgroundColor=[UIColor redColor];
    connectionBtn.tag=;
    [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;
    ) {
        _hud.mode=MBProgressHUDModeDeterminateHorizontalBar;
    }
    [self.view addSubview:_hud];

    [_hud showAnimated:YES whileExecutingBlock:^{
        ) {
             sleep();
        }
        )
        {
            [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:];

}

//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, );
    _currentLength=;

}
-(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:];
}
-(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();
    }

}
-(void)task
{
    sleep();
}
-(void)mixedTask
{
    _hud.mode=MBProgressHUDModeIndeterminate;
    _hud.labelText=@"Progressing";
    float progress=0.0f;
    while (progress<1.0f) {
        progress+=0.1f;
        _hud.progress=progress;
        usleep();
    }
    // Back to indeterminate mode
    _hud.mode = MBProgressHUDModeIndeterminate;
    _hud.labelText = @"Cleaning up";
    sleep();
    // 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();
}
- (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

IOS第三方之MBProgressHUD的更多相关文章

  1. iOS 第三方框架-MBProgressHUD

    MBProgressHUD提示框官网地址:https://github.com/jdg/MBProgressHUD 官网里已经提供了足够多的例子供我们使用,但在实现开发中,我们用到的只是其中的一小部分 ...

  2. iOS 第三方库、插件、知名博客总结

    iOS 第三方库.插件.知名博客总结 用到的组件 1.通过CocoaPods安装 项目名称 项目信息 AFNetworking 网络请求组件 FMDB 本地数据库组件 SDWebImage 多个缩略图 ...

  3. 超全!整理常用的iOS第三方资源(转)

    超全!整理常用的iOS第三方资源 一:第三方插件 1:基于响应式编程思想的oc 地址:https://github.com/ReactiveCocoa/ReactiveCocoa 2:hud提示框 地 ...

  4. iOS第三方库管理工具

    作者:彷徨iOS 原文地址1:http://iostree.sinaapp.com/?p=78 原文地址2:http://blog.csdn.net/wzzvictory/article/detail ...

  5. fir.im Weekly - 热门 iOS 第三方库大盘点

    本期 fir.im Weekly 收集的热度资源,大部分关于Android.iOS 开发工具.源码和脑洞大开的 UI 动画,希望给你带来更多的工作创意与灵感. 盘点国内程序员不常用的热门iOS第三方库 ...

  6. ios 第三方登录

    ios 第三方登录通常的做法是, 1.登录后,获得第三方的uid,调用服务器登录接口,如服务器返回无此用户,转2,有此用户,转3. 2.服务器返回无此用户,需完善用户资料,如果完成,则在服务器创建与第 ...

  7. 你一定能用的上的iOS第三方库

    点国内程序员不常用的热门iOS第三方库:看完,还敢自称"精通iOS开发"吗? 综合github上各个项目的关注度与具体使用情况,涵盖功能,UI,数据库,自动化测试,编程工具等类型, ...

  8. iOS第三方库

    热门iOS第三方库:看完,还敢自称”精通iOS开发”吗? 综合github上各个项目的关注度与具体使用情况,涵盖功能,UI,数据库,自动化测试,编程工具等类型,看完,还敢自称”精通iOS开发”吗? h ...

  9. IOS第三方之SVProgressHUD

    这个第三方和MBProgressHUD差不多,也挺简单的. // // ViewController.m // ProgressHUD // // Created by City--Online on ...

随机推荐

  1. 《JavaScript高级程序设计》第六章【面向对象的程序设计】 包括对象、创建对象、继承

    一.理解对象 二.创建对象      1. 工厂模式      2. 构造函数模式      3. 原型模式      4. 组合使用构造函数模式和原型模式[使用最广泛]      5. 动态原型模式 ...

  2. javascript实现快排

    <script> var a = [7,4,5,3,2,1,4,5,6,6,2,21,4,53,12,0,-5,31,535,64,11,1,1,1,1]; function swap(a ...

  3. 异常测试之Socket网络异常

    本文由作者张雨授权网易云社区发布. 前言 不知道大家在测试的过程中有没有发现关于异常测试这样一个特点: 无论是分散在功能测试中的异常用例还是规模相对较大的专项异常测试中,异常测试的用例占比虽然不大但是 ...

  4. 4月第4周业务风控关注 | 网络犯罪经济每年1.5万亿美元 GDP居全球第12位

    本文由  网易云发布. 易盾业务风控周报每周呈报值得关注的安全技术和事件,包括但不限于内容安全.移动安全.业务安全和网络安全,帮助企业提高警惕,规避这些似小实大.影响业务健康发展的安全风险. 1.网络 ...

  5. 检查网卡是否支持 SR-IOV

    [root@node1 ~]# lspci -nn | grep Eth 08:00.0 Ethernet controller [0200]: Intel Corporation I350 Giga ...

  6. Manacher算法学习笔记

    前言 Manacher(也叫马拉车)是一种用于在线性时间内找出字符串中最长回文子串的算法 算法 一般的查找回文串的算法是枚举中心,然后往两侧拓展,看最多拓展出多远.最坏情况下$O(n^2)$ 然而Ma ...

  7. 隐藏导航栏,偏移20PX

    1:让ViewController在NavigationBar下面开始布局. automaticallyAdjustsScrollViewInsets作用 当Controller上存在唯一一个UISc ...

  8. Flask的WTforms

    一.简单介绍 WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 类似于Django中的modelform 安装: pip3 install wtforms 二.简 ...

  9. method swizzing

    原理 类的方法类别中,选择子的名称通过映射表找到应该调用的方法.如下所示:  OC 的运行时提供了几个方法可以操作这张表.可以向其中新增选择子,改变选择子的实现,或者交换选择子映射到的指针.  在 ...

  10. 【xsy1144】选物品 主席树

    题目大意:$N$ 件物品摆成一排,给每个物品定义两个属性 $A$ 和$ B$,两件物品的 差异度 定义为它们两种属性的差的绝对值中较大的一个.如果要求出一些物品的差异度,我们先定义一个 理想物品,使它 ...