SVProgressHUD 2.3.1

SVProgressHUD 2.3.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布日期2023 年 11 月

Tobias TiemerdingTobias Tiemerding 维护。



  • Sam Vermette 和 Tobias Totzek




SVProgressHUD 是一个干净且易于使用的 HUD,旨在在 iOS 和 tvOS 上显示任务执行的进度。

SVProgressHUD

演示

Appetize.io 上尝试 SVProgressHUD

安装

手动

  • SVProgressHUD/SVProgressHUD 文件夹拖到你的项目中。
  • 请注意加 SVProgressHUD.bundleTargets->Build Phases->Copy Bundle Resources
  • QuartzCore 框架添加到你的项目中。

Swift

尽管 SVProgressHUD 用 Objective-C 编写,但可以在 Swift 中无缝使用。如果你使用 CocoaPods,请将以下行添加到你的 Podfile

use_frameworks!

如果你已手动添加 SVProgressHUD,只需将包含 SVProgressHUD 头文件的 桥接头 文件添加到你的项目中。

使用

(请参阅 /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];
    });
});

显示 HUD

您可以使用以下任一方法显示不确定任务的进度

+ (void)show;
+ (void)showWithStatus:(NSString*)string;

如果您想使 HUD 反映任务的进度,请使用以下任一方法

+ (void)showProgress:(CGFloat)progress;
+ (void)showProgress:(CGFloat)progress status:(NSString*)status;

关闭 HUD

您可以使用以下方法来关闭 HUD

+ (void)dismiss;
+ (void)dismissWithDelay:(NSTimeInterval)delay;

如果您想堆叠 HUD,可以通过使用以下方法来平衡每个显示呼叫

+ (void)popActivity;

HUD 会在 popActivity 调用的次数与显示调用的次数匹配后关闭。

或者在稍后关闭前显示确认图标。显示时间取决于 minimumDismissTimeInterval 和给定字符串的长度。

+ (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)setContainerView:(UIView*)containerView;                    // default is window level
+ (void)setMinimumSize:(CGSize)minimumSize;                         // default is CGSizeZero, can be used to avoid resizing
+ (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)setBorderColor:(nonnull UIColor*)color;                     // default is nil
+ (void)setBorderWidth:(CGFloat)width;                              // default is 0
+ (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)setBackgroundLayerColor:(UIColor*)color;                    // default is [UIColor colorWithWhite:0 alpha:0.4], only used for SVProgressHUDMaskTypeCustom
+ (void)setImageViewSize:(CGSize)size;                              // default is 28x28 pt
+ (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)setGraceTimeInterval:(NSTimeInterval)interval;              // default is 0 seconds
+ (void)setMinimumDismissTimeInterval:(NSTimeInterval)interval;     // default is 5.0 seconds
+ (void)setMaximumDismissTimeInterval:(NSTimeInterval)interval;     // default is CGFLOAT_MAX
+ (void)setFadeInAnimationDuration:(NSTimeInterval)duration;        // default is 0.15 seconds
+ (void)setFadeOutAnimationDuration:(NSTimeInterval)duration;       // default is 0.15 seconds
+ (void)setMaxSupportedWindowLevel:(UIWindowLevel)windowLevel;      // default is UIWindowLevelNormal
+ (void)setHapticsEnabled:(BOOL)hapticsEnabled;						// default is NO

此外,SVProgressHUD 支持大多数上述方法的 UIAppearance 协议。

提示

作为标准,SVProgressHUD 提供两种预配置样式

  • SVProgressHUDStyleLight: 白色背景,带有黑色旋转器和文本
  • SVProgressHUDStyleDark: 黑色背景,带有白色旋转器和文本

如果您想使用自定义颜色,请使用 setForegroundColorsetBackgroundColor:。这些会隐式地将 HUD 的样式设置为 SVProgressHUDStyleCustom

触觉反馈

对于使用较新设备(从iPhone 7开始)的用户,SVProgressHUD可以根据显示的HUD自动触发触觉反馈。反馈映射如下:

  • showSuccessWithStatus:UINotificationFeedbackTypeSuccess
  • showInfoWithStatus:UINotificationFeedbackTypeWarning
  • showErrorWithStatus:UINotificationFeedbackTypeError

要启用此功能,请使用setHapticsEnabled:

使用iPhone 7之前设备的用户功能将不会有变化。

通知

SVProgressHUD通过NSNotificationCenter发布四个通知,以响应其显示/关闭操作

  • SVProgressHUDWillAppearNotification在显示动画开始时
  • SVProgressHUDDidAppearNotification在显示动画完成后
  • SVProgressHUDWillDisappearNotification在关闭动画开始时
  • SVProgressHUDDidDisappearNotification在关闭动画完成后

每个通知传递一个包含HUD的状态字符串(如果有的话)的userInfo字典,可通过SVProgressHUDStatusUserInfoKey检索。

SVProgressHUD也会在用户轻触整个屏幕时发布SVProgressHUDDidReceiveTouchEventNotification通知,当用户直接触摸HUD时发布SVProgressHUDDidTouchDownInsideNotification通知。对于这些通知,不传递userInfo,但对象参数包含与触摸相关的UIEvent

应用程序扩展

在使用SVProgressHUD时,请使用#define SV_APP_EXTENSIONS以避免使用不可用的API。另外,从您的扩展视图控制器中调用setViewForExtension:并传递self.view

为该项目做出贡献

如果您有功能请求或错误报告,请通过发送拉取请求或创建新问题来提供帮助。请花些时间审阅以下由Nicolas Gallagher编写的指南:

许可证

SVProgressHUD根据MIT许可协议分发。成功、错误和信息图标由FreepikFlaticon制作,并按照Creative Commons BY 3.0许可发布。

鸣谢

SVProgressHUDSam VermetteTobias Tiemerding项目的贡献者提供。如果您在项目中使用SVProgressHUD,那么署名将会受到高度赞赏。