iOS第三方框架MBProgressHUD的使用

MBProgressHUD是一个嵌入式的iOS类,它在后台线程工作时在前台UI显示带有指示符或者半透明的标签.

用法

在运行长时间的任务时,需要遵循的主要准则是保持主线程不工作,因此可以及时更新UI。因此,是在主线程上使用MBProgressHUD,然后将要执行的任务旋转到新线程上。

[MBProgressHUD showHUDAddedTo:self.view animated:YES];
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
    // 任务代码
    dispatch_async(dispatch_get_main_queue(), ^{
        [MBProgressHUD hideHUDForView:self.view animated:YES];
    });
});

您可以在任何view中添加HUD.但是避免将HUD添加到UIKit具有复杂视图层次结构的某些视图, 比如UITableViewUICollectionView,这样可能以意想不到的方式改变他们的子视图,从而破坏HUD显示。

使用mode属性来配置你的HUD

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeAnnularDeterminate;
hud.label.text = @"Loading";
[self doSomethingInBackgroundWithProgressCallback:^(float progress) {
    hud.progress = progress;
} completionCallback:^{
    [hud hideAnimated:YES];
}];

使用一个NSProgress对象,当通过该对象报告进度时,MBProgressHUD会自动更新

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeAnnularDeterminate;
hud.label.text = @"Loading";
NSProgress *progress = [self doSomethingInBackgroundCompletion:^{
    [hud hideAnimated:YES];
}];
hud.progressObject = progress;

UI更新,倾向于调用MBProgressHUD应始终在主线程上完成。

如果你需要在主线程中运行你的长时间运行的任务,你应该稍微延迟一点,所以UIKit将有足够的时间来更新UI(即绘制HUD),然后用你的任务阻塞主线程。

[MBProgressHUD showHUDAddedTo:self.view animated:YES];
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    // Do something...
    [MBProgressHUD hideHUDForView:self.view animated:YES];
});
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,276评论 4 61
  • 茶是天然饮料,健康饮品,茶中含有多种人体所需的营养物质,经常喝茶的人有意想不到的好处,茶能让我们变得健康,对长寿也...
    闲情岁月_f0cb阅读 99评论 0 0
  • 大学就读的学校特别奇葩,学校要求只有大一下学期班级英语前三名获得者能够获得四级考试的名额和机会,对于我这种高考完就...
    13d2fa1473e0阅读 4,353评论 39 92
  • 想找个地方去旅行 想在一个陌生的城市里 在古朴的街道中 走走停停 想在雨天里奔跑 不害怕淋湿头发,弄花了妆 想在深...
    多糖芒果汁阅读 229评论 0 3