注册

iOS超方便的多样式提示框

MBProgressHUD

MBProgressHUD是一个iOS嵌入式类,在后台线程中完成工作时显示带有指示符和/或标签的半透明HUD。HUD旨在代替未记录的,UIKit UIProgressHUD具有某些附加功能的专用显示器

要求

MBProgressHUD适用于iOS 9.0+。它取决于以下Apple框架,大多数Xcode模板应已包含以下框架:

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

您将需要最新的开发人员工具才能进行构建MBProgressHUD较旧的Xcode版本可能会起作用,但不会明确维护兼容性。

将MBProgressHUD添加到您的项目

CocoaPods

  1. pod 'MBProgressHUD', '~> 1.2.0'
  2. 通过运行安装pod pod install
  3. 随需包含MBProgressHUD #import "MBProgressHUD.h"

Carthage

  1. MBProgressHUD添加到您的Cartfile。例如,github "jdg/MBProgressHUD" ~> 1.2.0
  2. run carthage update
  3. 将MBProgressHUD添加到您的项目中。

SwiftPM / Accio

.package(url: "https://github.com/jdg/MBProgressHUD.git", .upToNextMajor(from: "1.2.0")),

.target(name: "App", dependencies: ["MBProgressHUD"]),

然后在Xcode 11+(SwiftPM)中打开您的项目或运行accio update(Accio)。

源文件

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

  1. 下载最新的代码版本,或将存储库作为git子模块添加到git跟踪的项目中。
  2. 打开Xcode中的项目,然后拖放MBProgressHUD.hMBProgressHUD.m到您的项目(使用“产品导航视图”)。当询问是否从项目外部提取代码存档时,请确保选择复制项目。
  3. 随需包含MBProgressHUD #import "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];
});
});

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];
}];

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;

[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更新。


更多常见问题:https://github.com/jdg/MBProgressHUD
源码下载:MBProgressHUD-master.zip



0 个评论

要回复文章请先登录注册