您的位置:首页 > 其它

MBProgressHUD 第三方库使用

2015-07-11 14:04 148 查看
关键操作:





效果如下:





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秒,这里仅仅是模拟,相当于执行了一些操作耗时3秒;sleep 和 usleep 都是进程挂起操作方法,他们的精准度不同,所以按需使用;对于一般秒级别操作,就使用 sleep 方法
}

- (void)taskOfDeterminate {
CGFloat progressVal = 0.0f;
while (progressVal < 1.0) {
progressVal += 0.1;
_hud.progress = progressVal;
usleep(500000); //千分之一毫秒,即百万分之一秒;这里设置进程挂起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:17];
_hud.labelColor = color; //设置文本颜色;默认为白色
_hud.detailsLabelText = @"用户请稍候,耐心等待";
_hud.detailsLabelFont = [UIFont systemFontOfSize:14];
_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:17];
_hud.labelColor = color; //设置文本颜色;默认为白色
_hud.detailsLabelText = @"用户请稍候,耐心等待";
_hud.detailsLabelFont = [UIFont systemFontOfSize:14];
_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 1;
}

- (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 0:
[self showHUDByIndeterminate];
break;
case 1:
[self showHUDByDeterminate];
break;
case 2:
[self showHUDByDeterminateHorizontalBar];
break;
case 3:
[self showHUDByAnnularDeterminate];
break;
case 4:
[self showHUDByCustomView];
break;
case 5:
[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


输出结果:

2015-07-11 13:48:30.788 MBProgressHUDDemo[7211:111189] 0
2015-07-11 13:48:36.090 MBProgressHUDDemo[7211:111189] showHUDByIndeterminate 执行完成
2015-07-11 13:48:36.091 MBProgressHUDDemo[7211:111189] 隐藏后做一些操作
2015-07-11 13:48:37.378 MBProgressHUDDemo[7211:111189] 1
2015-07-11 13:48:43.208 MBProgressHUDDemo[7211:111189] showHUDByDeterminate 执行完成
2015-07-11 13:48:44.435 MBProgressHUDDemo[7211:111189] 2
2015-07-11 13:48:50.278 MBProgressHUDDemo[7211:111189] showHUDByDeterminateHorizontalBar 执行完成
2015-07-11 13:48:51.692 MBProgressHUDDemo[7211:111189] 3
2015-07-11 13:48:57.529 MBProgressHUDDemo[7211:111189] showHUDByAnnularDeterminate 执行完成
2015-07-11 13:48:58.473 MBProgressHUDDemo[7211:111189] 4
2015-07-11 13:49:01.778 MBProgressHUDDemo[7211:111189] showHUDByCustomView 执行完成
2015-07-11 13:49:02.790 MBProgressHUDDemo[7211:111189] 5
2015-07-11 13:49:06.096 MBProgressHUDDemo[7211:111189] showHUDByText 执行完成
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: