一种易于使用且具有个性能的 HUD 接口。
非常遗憾 Mutual Mobile 的内部 HUD 接口不能与世界分享。现在对所有人都开放了!
MMProgressHUD 是 Mutual Mobile 持续增长的开源 Objective-C 项目套件的一部分
可以通过 +sharedHUD
类方法或其他可用的类便捷方法访问 MMProgressHUD
的共享实例。
MMProgressHUD 的使用仅需要一行代码
[MMProgressHUD showWithTitle:@"Loading..." status:@"25%"];
取消显示有几种方式,同样简单
/** Do some work asynchronously */
void (^completion)(void) = ^(){
[MMProgressHUD dismissWithSuccess:@"Completed!"];
}
无需指定父视图 -- 没有其他要考虑的事情。
对 MMProgressHUD 的外观和感觉进行自定义是可选的,可以在您的应用程序生命周期中执行一次。这些内容在下面的 设置 部分中展示。
使用 cocoapods 进行安装:pod 'MMProgressHUD'
如果您真的坚持手动安装,只需将仓库中 Source/
文件夹下的所有文件包含到您的项目中。如果您项目中没有,您需要链接到 QuartzCore 和 CoreGraphics 框架。
构建 MMProgressHUD 的主要动机是能够轻松地添加所需的有趣动画。根据您的需求,MMProgressHUD 有几种不同的呈现/取消呈现动画样式
使用 + (void)setPresentationStyle:(MMProgressHUDPresentationStyle)presentationStyle;
来修改展示动画。
MMProgressHUD使用CoreGraphics绘制的图像作为默认图像。这使得在项目中嵌入所有文件变得非常容易,无需指定需要复制的包和其它资源。只需要包含源代码即可。
MMProgressHUD是窗口基础类型的,所以它会显示在状态栏以上。这意味着MMProgressHUD不会对您的视图层次结构造成混乱,它将在自己的窗口中保持独立。MMProgressHUD在任何展示过程中都不会成为主窗口。
MMProgressHUD支持几乎任意的文本内容。作为设计和减少混乱的一种方法,您可能不应该将过多的文本放入HUD中,但MMProgressHUD会根据您的文本内容智能地布局自己。当显示HUD时更改文本和图像内容,将在两种状态之间初始化一个动画。这个动画非常快,但不是瞬间完成,以便提供状态变化的环境。
MMProgressHUD支持极基本的用户输入,形式为用户确认触摸以启动“取消”操作。用户触摸HUD后,它将进入“确认”状态,其中HUD改变状态来告诉用户下一次触摸将触发您定义的操作(见下文“完成块”)。例如,您可以使用它让用户取消长运行的任务。如果在指定的时间内用户没有确认操作,“确认”状态将重置为正常的HUD状态。MMProgressHUD在确定是否进入“确认”状态时会查找cancelBlock
。
+ (void)showWithTitle:(NSString *)title
status:(NSString *)status
confirmationMessage:(NSString *)confirmation
cancelBlock:(void(^)(void))cancelBlock;
某些HUD操作可以附加一个工作块在工作完成时触发。
dismissAnimationCompletion
- 当HUD关闭动画完成后执行的工作块。cancelBlock
- 当用户取消长时间运行的操作时执行的工作块。当此块不为空时,HUD将对触摸做出反应,并在第一次触摸时进入“确认”状态。当用户执行确认触摸时,HUD将关闭并触发此块。progressCompletion
- 当HUD的进度属性被馈赠一个值 >= 1.f 时执行的工作块。默认情况下,MMProgressHUD 会显示一个不确定的加载动画,但它也支持通过进度API进行确定的任务。只需向 MMProgressHUD 提供一个进度([0,1]
),它就会显示一个进度指示器,将任务进度直观地显示给用户。
目前,已经提供了圆形和线性进度指示器,还有一个API可以提供遵循 MMProgressView
的任意确定的进度类。
+ (void)showProgressWithStyle:(MMProgressHUDProgressStyle)progressStyle
title:(NSString *)title
status:(NSString *)status
confirmationMessage:(NSString *)confirmation
cancelBlock:(void (^)(void))cancelBlock;
使用更新API更新进度 HUD
+ (void)updateProgress:(CGFloat)progress withStatus:(NSString *)status title:(NSString *)title;
+ (void)updateProgress:(CGFloat)progress withStatus:(NSString *)status;
+ (void)updateProgress:(CGFloat)progress;
在设置 MMProgressHUD 实例时,需要根据您尝试实现的样式和行为来配置设置。您可以在 MMProgressHUD.h
中找到可用的属性。这些设置将在 show
和 dismiss
调用之间持续存在,因此您只需要为每个实例设置一次。
overlayMode
- 在 HUD 下方和内容上显示的叠加类型。successImage
- 使用成功 dismiss 的成功图片。默认图片是一个白色的勾号。errorImage
- 使用错误情况的错误图片。默认图片是一个白色的 'X'。confirmationMessage
- 在显示可取消的 HUD 动作时显示给用户的消息。presentationStyle
- HUD 当自身显示和消失时的行为动画。glowColor
- 在取消确认状态时 HUD 发射的发光颜色。progressStyle
- 当 HUD 处于确定进度状态时继承的样式。MMProgressHUD 由一个窗口、一个叠加视图和 HUD 视图本身组成。由于 MMProgressHUD 是基于窗口的,叠加视图将在状态栏全屏显示。与 MMProgressHUD 的视觉效果相关的唯一两个信息元素是文本标签。
titleLabel
- 这是在 HUD 顶部内容区域上方的标签。
statusLabel
- 在 HUD 中心内容区域下方显示的消息标签。在没有标题文本的情况下,此标签的字体将是粗体版本。
您永远不会直接访问这些标签属性,但了解在使用类的便捷方法时哪些文本将显示在哪个标签中是有用的。
当将您的修改重新贡献给整个社区时,请记住以下几点:
由 Lars Anderson 在 Mutual Mobile 创建。
标准的MIT许可证