MBProgressHUD 第三方库使用
jopen
9年前
关键操作:
效果如下:
ViewController.h
#import <UIKit/UIKit.h> #import "MBProgressHUD.h" @interface ViewController : UITableViewController<MBProgressHUDDelegate> @property (strong, nonatomic) MBProgressHUD *hud; @property (strong, nonatomic) NSArray *arrMode; @property (strong, 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 执行完成来自:http://www.cnblogs.com/huangjianwu/p/4638542.html