测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | MIT |
发布最新发布 | 2016年10月 |
由 KK 维护。
依赖项 | |
KKBaseComponent | >= 0 |
MBProgressHUD | ~> 0.9.2 |
MBProgressHUD 是一个在 iOS 中使用的类,它可以在后台线程中工作同时在屏幕上显示带有指示符和/或标签的半透明 HUD。该 HUD 的目的是作为文档未公开的私有 UIKit UIProgressHUD 的替代品,并增加了额外的功能。
MBProgressHUD 在任何 iOS 版本上都能运行,并且与 ARC 和非 ARC 项目兼容。它依赖以下 Apple 框架,这些框架通常包含在大多数 Xcode 模板中:
为了构建 MBProgressHUD,您需要最新的开发者工具。旧的 Xcode 版本可能会有所工作,但是不会明确维护兼容性。
或者您可以直接将 MBProgressHUD.h
和 MBProgressHUD.m
源文件添加到您的项目中。
MBProgressHUD.h
和 MBProgressHUD.m
拖放到项目中(使用“Product Navigator 视图”)。如果您将代码存档提取到项目外部,请确保在询问时选择“复制项”。#import "MBProgressHUD.h"
。您还可以将 MBProgressHUD 作为静态库添加到您的项目中。
MBProgressHUD.xcodeproj
拖放到项目中或工作区中(使用“Product Navigator 视图”)。libMBProgressHUD.a
。您可能还需要将 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上找到。