MBProgressHUDKKHint 0.1.0

MBProgressHUDKKHint 0.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2016年10月

KK 维护。



 
依赖项
KKBaseComponent>= 0
MBProgressHUD~> 0.9.2
 

  • 作者
  • wangtieshan

MBProgressHUD

MBProgressHUD 是一个在 iOS 中使用的类,它可以在后台线程中工作同时在屏幕上显示带有指示符和/或标签的半透明 HUD。该 HUD 的目的是作为文档未公开的私有 UIKit UIProgressHUD 的替代品,并增加了额外的功能。

要求

MBProgressHUD 在任何 iOS 版本上都能运行,并且与 ARC 和非 ARC 项目兼容。它依赖以下 Apple 框架,这些框架通常包含在大多数 Xcode 模板中:

  • Foundation.framework
  • UIKit.framework
  • CoreGraphics.framework

为了构建 MBProgressHUD,您需要最新的开发者工具。旧的 Xcode 版本可能会有所工作,但是不会明确维护兼容性。

将 MBProgressHUD 添加到您的项目中

源文件

或者您可以直接将 MBProgressHUD.hMBProgressHUD.m 源文件添加到您的项目中。

  1. 下载最新代码版本:最新代码版本 或将仓库作为 git 子模块添加到您跟踪的 git 项目中。
  2. 在 Xcode 中打开您的项目,然后将 MBProgressHUD.hMBProgressHUD.m 拖放到项目中(使用“Product Navigator 视图”)。如果您将代码存档提取到项目外部,请确保在询问时选择“复制项”。
  3. 在需要使用 MBProgressHUD 的地方包含它,使用 #import "MBProgressHUD.h"

静态库

您还可以将 MBProgressHUD 作为静态库添加到您的项目中。

  1. 下载最新代码版本:最新代码版本 或将仓库作为 git 子模块添加到您跟踪的 git 项目中。
  2. 在 Xcode 中打开您的项目,然后将 MBProgressHUD.xcodeproj 拖放到项目中或工作区中(使用“Product Navigator 视图”)。
  3. 选择您的目标并转到“构建阶段”标签。在“链接二进制与库”部分中选择添加按钮。在表单中找到并添加 libMBProgressHUD.a。您可能还需要将 MBProgressHUD 添加到目标依赖项列表中。
  4. 在使用MBProgressHUD时,无论需要在何处,都使用#import <MBProgressHUD/MBProgressHUD.h>进行包含。

使用方法

处理MBProgressHUD时,运行长时间任务的主要注意事项是保持主线程无工作,以便能够及时更新UI。因此,推荐的方式是在主线程上设置MBProgressHUD,然后将你要执行的任务在一个新线程上执行。

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

如果需要配置HUD,可以通过使用showHUDAddedTo:animated:方法返回的MBProgressHUD引用来实现。

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

UI更新应该始终在主线程上完成。然而,MBProgressHUD中的一些设置器被认为是“线程安全”的,可以从后台线程中调用。这些也包括setMode:setCustomView:setLabelText:setLabelFont:setDetailsLabelText:setDetailsLabelFont:setProgress:

如果你的长时间任务需要在主线程上运行,你应该稍微延迟执行,以便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];
});

你应该知道,在上面的块内发出的任何HUD更新都不会在块完成之前显示。

有关更多示例,包括如何与NSURLConnection等异步操作一起使用MBProgressHUD,请参阅捆绑的演示项目。API详细文档可以在头文件(MBProgressHUD.h)中找到。

许可证

该代码在MIT许可证的条款和条件下分发(https://raw.github.com/TieShanWang/MBProgressHUDKKHint/0.1.0/LICENSE)

变更日志

每个MBProgressHUD版本的简要总结可以在wiki上找到。