SVProgressHUD
是一个干净、易于使用的 HUD,用于显示 iOS 和 tvOS 上的任务进度。
在 Appetize.io 上尝试 SVProgressHUD
。
SVProgressHUD/SVProgressHUD
文件夹拖到您的项目中。SVProgressHUD.bundle
添加到 Projects -> Build Phases -> Copy Bundle Resources
。(请参考 /Demo
目录中的 Xcode 示例项目)
SVProgressHUD
被创建为单例(即不需要显式分配和实例化;您可以直接调用 [SVProgressHUD method]
)。
明智地使用 SVProgressHUD
!只有当您绝对需要在用户前进之前执行任务时才使用它。错误的用例示例:下拉刷新、无限滚动、发送消息。
在您的应用中使用 SVProgressHUD
通常如下所示(使用 Grand Central Dispatch)
[SVProgressHUD show];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// time-consuming task
dispatch_async(dispatch_get_main_queue(), ^{
[SVProgressHUD dismiss];
});
});
您可以使用以下方式显示不确定任务的状态
+ (void)show;
+ (void)showWithStatus:(NSString*)string;
如果您希望 HUD 反映任务进度,请使用以下方法之一
+ (void)showProgress:(CGFloat)progress;
+ (void)showProgress:(CGFloat)progress status:(NSString*)status;
HUD 可以使用以下方式关闭
+ (void)dismiss;
+ (void)dismissWithDelay:(NSTimeInterval)delay;
如果您想堆叠 HUD,可以通过每个显示调用来平衡
+ (void)popActivity;
当 popActivity
调用的数量与显示调用相匹配时,HUD 将关闭。
或者在关闭前先显示一个确认图标。显示时间取决于给定字符串的长度(0.5到5秒)。
+ (void)showInfoWithStatus:(NSString *)string;
+ (void)showSuccessWithStatus:(NSString*)string;
+ (void)showErrorWithStatus:(NSString *)string;
+ (void)showImage:(UIImage*)image status:(NSString*)string;
SVProgressHUD
可以通过以下方法进行自定义
+ (void)setDefaultStyle:(SVProgressHUDStyle)style; // default is SVProgressHUDStyleLight
+ (void)setDefaultMaskType:(SVProgressHUDMaskType)maskType; // default is SVProgressHUDMaskTypeNone
+ (void)setDefaultAnimationType:(SVProgressHUDAnimationType)type; // default is SVProgressHUDAnimationTypeFlat
+ (void)setMinimumSize:(CGSize)minimumSize; // default is CGSizeZero, can be used to avoid resizing for a larger message
+ (void)setRingThickness:(CGFloat)width; // default is 2 pt
+ (void)setRingRadius:(CGFloat)radius; // default is 18 pt
+ (void)setRingNoTextRadius:(CGFloat)radius; // default is 24 pt
+ (void)setCornerRadius:(CGFloat)cornerRadius; // default is 14 pt
+ (void)setFont:(UIFont*)font; // default is [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline]
+ (void)setForegroundColor:(UIColor*)color; // default is [UIColor blackColor], only used for SVProgressHUDStyleCustom
+ (void)setBackgroundColor:(UIColor*)color; // default is [UIColor whiteColor], only used for SVProgressHUDStyleCustom
+ (void)setInfoImage:(UIImage*)image; // default is the bundled info image provided by Freepik
+ (void)setSuccessImage:(UIImage*)image; // default is bundled success image from Freepik
+ (void)setErrorImage:(UIImage*)image; // default is bundled error image from Freepik
+ (void)setViewForExtension:(UIView*)view; // default is nil, only used if #define SV_APP_EXTENSIONS is set
+ (void)setMinimumDismissTimeInterval:(NSTimeInterval)interval; // default is 5.0 seconds
此外,SVProgressHUD
支持大多数上述方法的 UIAppearance
协议。
作为标准,SVProgressHUD
提供了两种预先配置的样式
SVProgressHUDStyleLight
: 白背景,黑色旋转进度条和文字SVProgressHUDStyleDark
: 黑背景,白色旋转进度条和文字如果想要使用自定义颜色并通过 setForegroundColor
和 setBackgroundColor:
来设置,记得通过 setDefaultStyle:
设置 SVProgressHUDStyleCustom
。
SVProgressHUD
在显示/消失动画时通过 NSNotificationCenter
发布四个通知
SVProgressHUDWillAppearNotification
在显示动画开始时触发SVProgressHUDDidAppearNotification
在显示动画完成时触发SVProgressHUDWillDisappearNotification
在消失动画开始时触发SVProgressHUDDidDisappearNotification
在消失动画完成时触发每个通知都会传递一个包含 HUD 状态字符串(如果有)的 userInfo
字典,可以通过 SVProgressHUDStatusUserInfoKey
来检索。
SVProgressHUD
还会发布 SVProgressHUDDidReceiveTouchEventNotification
,当用户触摸整个屏幕时触发,或者发布 SVProgressHUDDidTouchDownInsideNotification
,当用户直接触摸 HUD 时触发。对于这些通知,不传递 userInfo
,但对象参数包含了与触摸相关的 UIEvent
。
当在应用扩展中使用 SVProgressHUD
时,使用 #define SV_APP_EXTENSIONS
以避免使用不可用的 API。另外,从你的扩展视图控制器调用 setViewForExtension:
并传入 self.view
。
如果你有功能请求或错误报告,请通过发送拉取请求或者创建新问题来帮忙。请花点时间审阅由Nicolas Gallagher编写的指导方针。
SVProgressHUD
由 Sam Vermette 和 项目的贡献者提供。如果你的项目中使用了 SVProgressHUD
,那么给出致谢将是非常受欢迎的。成功、错误和信息图标由 Freepik 提供,其来自 Flaticon,并受 Creative Commons BY 3.0 许可。