关键操作:
效果如下:
ViewController.h
1 #import <UIKit/UIKit.h>2 #import "MBPRogressHUD.h"3 4 @interface ViewController : UITableViewController<MBProgressHUDDelegate>5 @property (strong, nonatomic) MBProgressHUD *hud;6 @property (copy, nonatomic) NSArray *arrMode;7 @property (copy, nonatomic) NSArray *arrModeName;8 9 @end
ViewController.m
1 #import "ViewController.h" 2 3 @interface ViewController () 4 - (void)loadData; 5 - (void)layoutUI; 6 - (void)taskOfIndeterminate; 7 - (void)taskOfDeterminate; 8 - (void)taskOfDeterminateHorizontalBar; 9 - (void)taskOfAnnularDeterminate; 10 - (void)taskOfCustomView; 11 - (void)taskOfText; 12 - (void)showHUDByIndeterminate; 13 - (void)showHUDByDeterminate; 14 - (void)showHUDByDeterminateHorizontalBar; 15 - (void)showHUDByAnnularDeterminate; 16 - (void)showHUDByCustomView; 17 - (void)showHUDByText; 18 @end 19 20 @implementation ViewController 21 22 - (void)viewDidLoad { 23 [super viewDidLoad]; 24 25 [self loadData]; 26 [self layoutUI]; 27 } 28 29 - (void)didReceiveMemoryWarning { 30 [super didReceiveMemoryWarning]; 31 // Dispose of any resources that can be recreated. 32 } 33 34 - (void)loadData { 35 _arrMode = @[ @"MBProgressHUDModeIndeterminate", 36 @"MBProgressHUDModeDeterminate", 37 @"MBProgressHUDModeDeterminateHorizontalBar", 38 @"MBProgressHUDModeAnnularDeterminate", 39 @"MBProgressHUDModeCustomView", 40 @"MBProgressHUDModeText" ]; 41 42 _arrModeName = @[ @"UIActivityIndicatorView 来显示进度,这是默认值", 43 @"圆形饼图来显示进度", 44 @"水平进度条来显示进度", 45 @"圆环来显示进度", 46 @"自定义视图;例如通过这种方式,来显示一个正确或错误的提示图", 47 @"只显示文本" ]; 48 } 49 50 - (void)layoutUI { 51 self.navigationItem.title = @"MBProgressHUD 第三方库使用"; 52 } 53 54 #pragma mark - MBProgressHUD Additional Task 55 - (void)taskOfIndeterminate { 56 sleep(3); //进程挂起3秒,这里仅仅是模拟,相当于执行了一些操作耗时3秒;sleep 和 usleep 都是进程挂起操作方法,他们的精准度不同,所以按需使用;对于一般秒级别操作,就使用 sleep 方法 57 } 58 59 - (void)taskOfDeterminate { 60 CGFloat progressVal = 0.0f; 61 while (progressVal < 1.0) { 62 progressVal += 0.1; 63 _hud.progress = progressVal; 64 usleep(500000); //千分之一毫秒,即百万分之一秒;这里设置进程挂起0.5秒 65 } 66 } 67 68 - (void)taskOfDeterminateHorizontalBar { 69 [self taskOfDeterminate]; 70 } 71 72 - (void)taskOfAnnularDeterminate { 73 [self taskOfDeterminate]; 74 } 75 76 - (void)taskOfCustomView { 77 [self taskOfIndeterminate]; 78 } 79 80 - (void)taskOfText { 81 [self taskOfIndeterminate]; 82 } 83 84 #pragma mark - MBProgressHUD 85 - (void)showHUDByIndeterminate { 86 UIColor *color = [UIColor cyanColor]; 87 88 _hud = [[MBProgressHUD alloc] initWithView:self.view]; 89 _hud.activityIndicatorColor = color; //设置指示器颜色;默认为白色 90 91 //label 和 detailsLabel 是公共部分,其他模式的展示效果一样可以用 92 _hud.labelText = @"加载中..."; 93 _hud.labelFont = [UIFont systemFontOfSize:17]; 94 _hud.labelColor = color; //设置文本颜色;默认为白色 95 _hud.detailsLabelText = @"用户请稍候,耐心等待"; 96 _hud.detailsLabelFont = [UIFont systemFontOfSize:14]; 97 _hud.detailsLabelColor = color; //设置详细文本颜色;默认为白色 98 99 //一些额外不常用的设置100 _hud.minShowTime = 5.0f;101 _hud.opacity = 0.5f;102 _hud.animationType = MBProgressHUDAnimationZoomOut;103 _hud.cornerRadius = 15.0f;104 _hud.dimBackground = YES;105 _hud.xOffset = 0.0f;106 _hud.yOffset = 50.0f;107 _hud.margin = 30.0f;108 _hud.square = YES;109 _hud.minSize = CGSizeMake(240.0f, 200.0f); //设置了 minSize 后,square 就失效了110 111 //设置委托,以便调用hudWasHidden:方法112 _hud.delegate = self;113 [self.view addSubview:_hud];114 115 //操作方式一:116 // [_hud showWhileExecuting:@selector(taskOfIndeterminate)117 // onTarget:self118 // withObject:nil119 // animated:YES];120 121 //操作方式二:122 [_hud showAnimated:YES123 whileExecutingBlock:^{124 [self taskOfIndeterminate];125 } completionBlock:^{126 NSLog(@"showHUDByIndeterminate 执行完成");127 }];128 }129 130 - (void)showHUDByDeterminate {131 _hud = [[MBProgressHUD alloc] initWithView:self.view];132 _hud.mode = MBProgressHUDModeDeterminate;133 [self.view addSubview:_hud];134 135 [_hud showAnimated:YES136 whileExecutingBlock:^{137 [self taskOfDeterminate];138 } completionBlock:^{139 NSLog(@"showHUDByDeterminate 执行完成");140 }];141 }142 143 - (void)showHUDByDeterminateHorizontalBar {144 _hud = [[MBProgressHUD alloc] initWithView:self.view];145 _hud.mode = MBProgressHUDModeDeterminateHorizontalBar;146 [self.view addSubview:_hud];147 148 [_hud showAnimated:YES149 whileExecutingBlock:^{150 [self taskOfDeterminateHorizontalBar];151 } completionBlock:^{152 NSLog(@"showHUDByDeterminateHorizontalBar 执行完成");153 }];154 }155 156 - (void)showHUDByAnnularDeterminate {157 _hud = [[MBProgressHUD alloc] initWithView:self.view];158 _hud.mode = MBProgressHUDModeAnnularDeterminate;159 [self.view addSubview:_hud];160 161 [_hud showAnimated:YES162 whileExecutingBlock:^{163 [self taskOfAnnularDeterminate];164 } completionBlock:^{165 NSLog(@"showHUDByAnnularDeterminate 执行完成");166 }];167 }168 169 - (void)showHUDByCustomView {170 _hud = [[MBProgressHUD alloc] initWithView:self.view];171 _hud.mode = MBProgressHUDModeCustomView;172 _hud.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"AlbumCellRedSelected"]];173 [self.view addSubview:_hud];174 175 [_hud showAnimated:YES176 whileExecutingBlock:^{177 [self taskOfCustomView];178 } completionBlock:^{179 NSLog(@"showHUDByCustomView 执行完成");180 }];181 182 }183 184 - (void)showHUDByText {185 UIColor *color = [UIColor cyanColor];186 187 _hud = [[MBProgressHUD alloc] initWithView:self.view];188 _hud.mode = MBProgressHUDModeText;189 _hud.labelText = @"加载中...";190 _hud.labelFont = [UIFont systemFontOfSize:17];191 _hud.labelColor = color; //设置文本颜色;默认为白色192 _hud.detailsLabelText = @"用户请稍候,耐心等待";193 _hud.detailsLabelFont = [UIFont systemFontOfSize:14];194 _hud.detailsLabelColor = color; //设置详细文本颜色;默认为白色195 [self.view addSubview:_hud];196 197 [_hud showAnimated:YES198 whileExecutingBlock:^{199 [self taskOfText];200 } completionBlock:^{201 NSLog(@"showHUDByText 执行完成");202 }];203 }204 205 #pragma mark - MBProgressHUDDelegate206 - (void)hudWasHidden:(MBProgressHUD *)hud {207 NSLog(@"隐藏后做一些操作");208 }209 210 #pragma mark - TableView211 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {212 return @"展示模式列表";213 }214 215 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {216 return 1;217 }218 219 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {220 return _arrMode.count;221 }222 223 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {224 static NSString *cellIdentifier = @"cellIdentifier";225 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];226 if (!cell) {227 cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];228 }229 230 NSInteger row = indexPath.row;231 cell.textLabel.text = _arrMode[row];232 cell.textLabel.adjustsFontSizeToFitWidth = YES;233 cell.detailTextLabel.text = _arrModeName[row];234 cell.detailTextLabel.adjustsFontSizeToFitWidth = YES;235 236 return cell;237 }238 239 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {240 switch (indexPath.row) {241 case 0:242 [self showHUDByIndeterminate];243 break;244 case 1:245 [self showHUDByDeterminate];246 break;247 case 2:248 [self showHUDByDeterminateHorizontalBar];249 break;250 case 3:251 [self showHUDByAnnularDeterminate];252 break;253 case 4:254 [self showHUDByCustomView];255 break;256 case 5:257 [self showHUDByText];258 break;259 }260 261 NSLog(@"%ld", (long)indexPath.row);262 }263 264 @end
AppDelegate.h
1 #import <UIKit/UIKit.h>2 3 @interface AppDelegate : UIResponder <UIapplicationDelegate>4 5 @property (strong, nonatomic) UIWindow *window;6 @property (strong, nonatomic) UINavigationController *navigationController;7 8 @end
AppDelegate.m
1 #import "AppDelegate.h" 2 #import "ViewController.h" 3 4 @interface AppDelegate () 5 6 @end 7 8 @implementation AppDelegate 9 10 11 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {12 _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];13 ViewController *viewController = [[ViewController alloc] init];14 _navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];15 _window.rootViewController = _navigationController;16 //[_window addSubview:_navigationController.view]; //当_window.rootViewController关联时,这一句可有可无17 [_window makeKeyAndVisible];18 return YES;19 }20 21 - (void)applicationWillResignActive:(UIApplication *)application {22 }23 24 - (void)applicationDidEnterBackground:(UIApplication *)application {25 }26 27 - (void)applicationWillEnterForeground:(UIApplication *)application {28 }29 30 - (void)applicationDidBecomeActive:(UIApplication *)application {31 }32 33 - (void)applicationWillTerminate:(UIApplication *)application {34 }35 36 @end
输出结果:
1 2015-07-11 13:48:30.788 MBProgressHUDDemo[7211:111189] 0 2 2015-07-11 13:48:36.090 MBProgressHUDDemo[7211:111189] showHUDByIndeterminate 执行完成 3 2015-07-11 13:48:36.091 MBProgressHUDDemo[7211:111189] 隐藏后做一些操作 4 2015-07-11 13:48:37.378 MBProgressHUDDemo[7211:111189] 1 5 2015-07-11 13:48:43.208 MBProgressHUDDemo[7211:111189] showHUDByDeterminate 执行完成 6 2015-07-11 13:48:44.435 MBProgressHUDDemo[7211:111189] 2 7 2015-07-11 13:48:50.278 MBProgressHUDDemo[7211:111189] showHUDByDeterminateHorizontalBar 执行完成 8 2015-07-11 13:48:51.692 MBProgressHUDDemo[7211:111189] 3 9 2015-07-11 13:48:57.529 MBProgressHUDDemo[7211:111189] showHUDByAnnularDeterminate 执行完成10 2015-07-11 13:48:58.473 MBProgressHUDDemo[7211:111189] 411 2015-07-11 13:49:01.778 MBProgressHUDDemo[7211:111189] showHUDByCustomView 执行完成12 2015-07-11 13:49:02.790 MBProgressHUDDemo[7211:111189] 513 2015-07-11 13:49:06.096 MBProgressHUDDemo[7211:111189] showHUDByText 执行完成
新闻热点
疑难解答