美文网首页
iOS第三方框架MBProgressHUD的使用

iOS第三方框架MBProgressHUD的使用

作者: 南衍儿 | 来源:发表于2017-11-30 10:14 被阅读0次

    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第三方框架MBProgressHUD的使用

          本文链接:https://www.haomeiwen.com/subject/kksmbxtx.html