关键操作:

 

效果如下:

 

ViewController.h

 #import <UIKit/UIKit.h>
#import "MBProgressHUD.h" @interface ViewController : UITableViewController<MBProgressHUDDelegate>
@property (strong, nonatomic) MBProgressHUD *hud;
@property (copy, nonatomic) NSArray *arrMode;
@property (copy, nonatomic) NSArray *arrModeName; @end

ViewController.m

 #import "ViewController.h"

 @interface ViewController ()
- (void)loadData;
- (void)layoutUI;
- (void)taskOfIndeterminate;
- (void)taskOfDeterminate;
- (void)taskOfDeterminateHorizontalBar;
- (void)taskOfAnnularDeterminate;
- (void)taskOfCustomView;
- (void)taskOfText;
- (void)showHUDByIndeterminate;
- (void)showHUDByDeterminate;
- (void)showHUDByDeterminateHorizontalBar;
- (void)showHUDByAnnularDeterminate;
- (void)showHUDByCustomView;
- (void)showHUDByText;
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; [self loadData];
[self layoutUI];
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} - (void)loadData {
_arrMode = @[ @"MBProgressHUDModeIndeterminate",
@"MBProgressHUDModeDeterminate",
@"MBProgressHUDModeDeterminateHorizontalBar",
@"MBProgressHUDModeAnnularDeterminate",
@"MBProgressHUDModeCustomView",
@"MBProgressHUDModeText" ]; _arrModeName = @[ @"UIActivityIndicatorView 来显示进度,这是默认值",
@"圆形饼图来显示进度",
@"水平进度条来显示进度",
@"圆环来显示进度",
@"自定义视图;例如通过这种方式,来显示一个正确或错误的提示图",
@"只显示文本" ];
} - (void)layoutUI {
self.navigationItem.title = @"MBProgressHUD 第三方库使用";
} #pragma mark - MBProgressHUD Additional Task
- (void)taskOfIndeterminate {
sleep(); //进程挂起3秒,这里仅仅是模拟,相当于执行了一些操作耗时3秒;sleep 和 usleep 都是进程挂起操作方法,他们的精准度不同,所以按需使用;对于一般秒级别操作,就使用 sleep 方法
} - (void)taskOfDeterminate {
CGFloat progressVal = 0.0f;
while (progressVal < 1.0) {
progressVal += 0.1;
_hud.progress = progressVal;
usleep(); //千分之一毫秒,即百万分之一秒;这里设置进程挂起0.5秒
}
} - (void)taskOfDeterminateHorizontalBar {
[self taskOfDeterminate];
} - (void)taskOfAnnularDeterminate {
[self taskOfDeterminate];
} - (void)taskOfCustomView {
[self taskOfIndeterminate];
} - (void)taskOfText {
[self taskOfIndeterminate];
} #pragma mark - MBProgressHUD
- (void)showHUDByIndeterminate {
UIColor *color = [UIColor cyanColor]; _hud = [[MBProgressHUD alloc] initWithView:self.view];
_hud.activityIndicatorColor = color; //设置指示器颜色;默认为白色 //label 和 detailsLabel 是公共部分,其他模式的展示效果一样可以用
_hud.labelText = @"加载中...";
_hud.labelFont = [UIFont systemFontOfSize:];
_hud.labelColor = color; //设置文本颜色;默认为白色
_hud.detailsLabelText = @"用户请稍候,耐心等待";
_hud.detailsLabelFont = [UIFont systemFontOfSize:];
_hud.detailsLabelColor = color; //设置详细文本颜色;默认为白色 //一些额外不常用的设置
_hud.minShowTime = 5.0f;
_hud.opacity = 0.5f;
_hud.animationType = MBProgressHUDAnimationZoomOut;
_hud.cornerRadius = 15.0f;
_hud.dimBackground = YES;
_hud.xOffset = 0.0f;
_hud.yOffset = 50.0f;
_hud.margin = 30.0f;
_hud.square = YES;
_hud.minSize = CGSizeMake(240.0f, 200.0f); //设置了 minSize 后,square 就失效了 //设置委托,以便调用hudWasHidden:方法
_hud.delegate = self;
[self.view addSubview:_hud]; //操作方式一:
// [_hud showWhileExecuting:@selector(taskOfIndeterminate)
// onTarget:self
// withObject:nil
// animated:YES]; //操作方式二:
[_hud showAnimated:YES
whileExecutingBlock:^{
[self taskOfIndeterminate];
} completionBlock:^{
NSLog(@"showHUDByIndeterminate 执行完成");
}];
} - (void)showHUDByDeterminate {
_hud = [[MBProgressHUD alloc] initWithView:self.view];
_hud.mode = MBProgressHUDModeDeterminate;
[self.view addSubview:_hud]; [_hud showAnimated:YES
whileExecutingBlock:^{
[self taskOfDeterminate];
} completionBlock:^{
NSLog(@"showHUDByDeterminate 执行完成");
}];
} - (void)showHUDByDeterminateHorizontalBar {
_hud = [[MBProgressHUD alloc] initWithView:self.view];
_hud.mode = MBProgressHUDModeDeterminateHorizontalBar;
[self.view addSubview:_hud]; [_hud showAnimated:YES
whileExecutingBlock:^{
[self taskOfDeterminateHorizontalBar];
} completionBlock:^{
NSLog(@"showHUDByDeterminateHorizontalBar 执行完成");
}];
} - (void)showHUDByAnnularDeterminate {
_hud = [[MBProgressHUD alloc] initWithView:self.view];
_hud.mode = MBProgressHUDModeAnnularDeterminate;
[self.view addSubview:_hud]; [_hud showAnimated:YES
whileExecutingBlock:^{
[self taskOfAnnularDeterminate];
} completionBlock:^{
NSLog(@"showHUDByAnnularDeterminate 执行完成");
}];
} - (void)showHUDByCustomView {
_hud = [[MBProgressHUD alloc] initWithView:self.view];
_hud.mode = MBProgressHUDModeCustomView;
_hud.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"AlbumCellRedSelected"]];
[self.view addSubview:_hud]; [_hud showAnimated:YES
whileExecutingBlock:^{
[self taskOfCustomView];
} completionBlock:^{
NSLog(@"showHUDByCustomView 执行完成");
}]; } - (void)showHUDByText {
UIColor *color = [UIColor cyanColor]; _hud = [[MBProgressHUD alloc] initWithView:self.view];
_hud.mode = MBProgressHUDModeText;
_hud.labelText = @"加载中...";
_hud.labelFont = [UIFont systemFontOfSize:];
_hud.labelColor = color; //设置文本颜色;默认为白色
_hud.detailsLabelText = @"用户请稍候,耐心等待";
_hud.detailsLabelFont = [UIFont systemFontOfSize:];
_hud.detailsLabelColor = color; //设置详细文本颜色;默认为白色
[self.view addSubview:_hud]; [_hud showAnimated:YES
whileExecutingBlock:^{
[self taskOfText];
} completionBlock:^{
NSLog(@"showHUDByText 执行完成");
}];
} #pragma mark - MBProgressHUDDelegate
- (void)hudWasHidden:(MBProgressHUD *)hud {
NSLog(@"隐藏后做一些操作");
} #pragma mark - TableView
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return @"展示模式列表";
} - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return ;
} - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return _arrMode.count;
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"cellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
} NSInteger row = indexPath.row;
cell.textLabel.text = _arrMode[row];
cell.textLabel.adjustsFontSizeToFitWidth = YES;
cell.detailTextLabel.text = _arrModeName[row];
cell.detailTextLabel.adjustsFontSizeToFitWidth = YES; return cell;
} - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
switch (indexPath.row) {
case :
[self showHUDByIndeterminate];
break;
case :
[self showHUDByDeterminate];
break;
case :
[self showHUDByDeterminateHorizontalBar];
break;
case :
[self showHUDByAnnularDeterminate];
break;
case :
[self showHUDByCustomView];
break;
case :
[self showHUDByText];
break;
} NSLog(@"%ld", (long)indexPath.row);
} @end

AppDelegate.h

 #import <UIKit/UIKit.h>

 @interface AppDelegate : UIResponder <UIApplicationDelegate>

 @property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UINavigationController *navigationController; @end

AppDelegate.m

 #import "AppDelegate.h"
#import "ViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
_window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
ViewController *viewController = [[ViewController alloc] init];
_navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
_window.rootViewController = _navigationController;
//[_window addSubview:_navigationController.view]; //当_window.rootViewController关联时,这一句可有可无
[_window makeKeyAndVisible];
return YES;
} - (void)applicationWillResignActive:(UIApplication *)application {
} - (void)applicationDidEnterBackground:(UIApplication *)application {
} - (void)applicationWillEnterForeground:(UIApplication *)application {
} - (void)applicationDidBecomeActive:(UIApplication *)application {
} - (void)applicationWillTerminate:(UIApplication *)application {
} @end

输出结果:

 -- ::30.788 MBProgressHUDDemo[:]
-- ::36.090 MBProgressHUDDemo[:] showHUDByIndeterminate 执行完成
-- ::36.091 MBProgressHUDDemo[:] 隐藏后做一些操作
-- ::37.378 MBProgressHUDDemo[:]
-- ::43.208 MBProgressHUDDemo[:] showHUDByDeterminate 执行完成
-- ::44.435 MBProgressHUDDemo[:]
-- ::50.278 MBProgressHUDDemo[:] showHUDByDeterminateHorizontalBar 执行完成
-- ::51.692 MBProgressHUDDemo[:]
-- ::57.529 MBProgressHUDDemo[:] showHUDByAnnularDeterminate 执行完成
-- ::58.473 MBProgressHUDDemo[:]
-- ::01.778 MBProgressHUDDemo[:] showHUDByCustomView 执行完成
-- ::02.790 MBProgressHUDDemo[:]
-- ::06.096 MBProgressHUDDemo[:] showHUDByText 执行完成

MBProgressHUD 第三方库使用的更多相关文章

  1. 【转】提示框第三方库之MBProgressHUD iOS toast效果 动态提示框效果

    原文网址:http://www.zhimengzhe.com/IOSkaifa/37910.html MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单.方便,并且可以对显 ...

  2. 常用iOS第三方库以及XCode插件介绍

    第三方库 CocoaPod CocoaPod并不是iOS上的第三方库 而是大名鼎鼎的第三方库的管理工具 在CocoaPod没有出现之前 第三方库的管理是非常痛苦的 尤其是一些大型的库(比如nimbus ...

  3. iOS,第三方库使用

    1.ASIHttpRequest网络请求库 2.MBProgressHUD指示层库 3.Toast+UIView提示库 4.SDWebImage图片缓存库 5.MGSwipeTableCell单元格侧 ...

  4. CocoaPods 添加第三方库报错

    1.终端报错:The dependency MBProgressHUD (~> 0.9.2) is not used in any concrete target.2.原因:CocoaPods升 ...

  5. 个人常用iOS第三方库以及XCode插件介绍

    第三方库 CocoaPod CocoaPod并不是iOS上的第三方库 而是大名鼎鼎的第三方库的管理工具 在CocoaPod没有出现之前 第三方库的管理是非常痛苦的 尤其是一些大型的库(比如nimbus ...

  6. 【转】个人常用iOS第三方库以及XCode插件介绍 -- 不错

    原文网址:http://adad184.com/2015/07/08/my-favorite-libraries-and-plugins/ 第三方库是现在的程序员离不开的东西 不光是APP开发 基本上 ...

  7. CocoaPods一个Objective-C第三方库的管理利器

    转:http://blog.csdn.net/totogo2010/article/details/8198694 介绍: 开发应用的时候第三方的库是不可缺少的,能提高开发的效率. 一些经常用到的库, ...

  8. Cocopods -第三方库的管理

    前言 什么是CocoaPods? CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为“Pods”的依赖库(这些类库必须是CocoaPods ...

  9. ios开发必备第三方库

    引言 作为iOS开发人员,在开发App的过程中怎么会不使用第三方库呢?相信没有App是不使用第三方库的! 网络库 网络库,这是开发必备,除非你的App玩单机.现在特别火也特别好用的网络库就数AFNet ...

随机推荐

  1. ios 让textView被键盘挡住上移

    注册键盘通知 #pragma mark - 键盘通知 - (void)addNoticeForKeyboard { //注册键盘出现的通知 [[NSNotificationCenter default ...

  2. asp.net gridview 如何实现行点击事件

    第一步:绑定行点击事件 protected void GV_DATA_RowDataBound( object sender, GridViewRowEventArgs e ) { if( e.Row ...

  3. [Linux实用工具]Windows下同步Linux文件(Linux安装Samba和配置)

    场景需求: 安装了Ubuntu在虚拟机上,但是代码编辑或者其它更多的操作的时候,还是习惯在windows下进行.如果windows下编辑完再上传到服务器,再编译执行,就太繁琐了.一次两次还好说,这编译 ...

  4. 编辑距离算法(Levenshtein)

    编辑距离定义: 编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数. 许可的编辑操作包括:将一个字符替换成另一个字符,插入一个字符,删除一个字符. 例如 ...

  5. 腾讯云CentOS升级JDK1.8

    1.查看CentOS自带JDK是否已安装. yum list installed |grep java. 2.卸载原有JDK yum -y remove java-1.5.0-gcj.i686 3.查 ...

  6. logistic回归学习

    logistic回归是一种分类方法,用于两分类的问题,其基本思想为: 寻找合适的假设函数,即分类函数,用来预测输入数据的结果: 构造损失函数,用来表示预测的输出结果与训练数据中实际类别之间的偏差: 最 ...

  7. Free-form语言

    在计算机编程领域,程序指令文本中的字符在『纸面』上所处的位置无关紧要 - 不像老式的穿孔卡片系统(punched card system)程序指令文本需要放置在指定列,这种编程语言就可算是自由形式语言 ...

  8. Fine-tuning Convolutional Neural Networks for Biomedical Image Analysis: Actively and Incrementally如何使用尽可能少的标注数据来训练一个效果有潜力的分类器

    作者:AI研习社链接:https://www.zhihu.com/question/57523080/answer/236301363来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  9. java小技巧-生成重复的字符

    今天碰到个需求,根据字段个数,动态生成sql的占位符,如下: public static void main(String[] args) { System.out.println(String.jo ...

  10. kafka生产消费原理笔记

    一.什么是kafka Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性 ...