OC三方框架06:SVProgressHUD探索

张建 lol

前言

SVProgressHUD 是对提示框的一个封装库,里面的方法都是类方法,并且对象是通过单例创建。由于方法都是通过类名调用,简单明了。

基本方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
+ (void)show;    显示:状态是一个迅速转动的圈
+ (void)showWithMaskType:(SVProgressHUDMaskType)maskType; 显示并且带着一个状态
+ (void)showWithStatus:(NSString*)status; 显示并且带着文字
+ (void)showWithStatus:(NSString*)status maskType:(SVProgressHUDMaskType)maskType;

+ (void)showProgress:(float)progress; //显示进度:状态是一个进度圈
+ (void)showProgress:(float)progress maskType:(SVProgressHUDMaskType)maskType;
+ (void)showProgress:(float)progress status:(NSString*)status;
+ (void)showProgress:(float)progress status:(NSString*)status maskType:(SVProgressHUDMaskType)maskType;

+ (void)setStatus:(NSString*)string; // 改变正显示着的HUD的文字

// stops the activity indicator, shows a glyph + status, and dismisses HUD a little bit later
+ (void)showInfoWithStatus:(NSString *)string; //显示消息信息,其实就是中心图片更换了
+ (void)showInfoWithStatus:(NSString *)string maskType:(SVProgressHUDMaskType)maskType;

+ (void)showSuccessWithStatus:(NSString*)string; //显示成功消息
+ (void)showSuccessWithStatus:(NSString*)string maskType:(SVProgressHUDMaskType)maskType;

+ (void)showErrorWithStatus:(NSString *)string; //显示错误消息
+ (void)showErrorWithStatus:(NSString *)string maskType:(SVProgressHUDMaskType)maskType;

// use 28x28 white pngs
+ (void)showImage:(UIImage*)image status:(NSString*)status; //显示自己设置的图片,图片大小事28 * 28 px
+ (void)showImage:(UIImage*)image status:(NSString*)status maskType:(SVProgressHUDMaskType)maskType;

+ (void)setOffsetFromCenter:(UIOffset)offset; //距离中心点的偏移量
+ (void)resetOffsetFromCenter; //返回中心点

+ (void)popActivity; // 消除一个HUD,根据其实现方法如果前面有执行了好几次show方法,如果给定的progress == 0 或者 pregress < 0那样就会让使一个参数+1,执行这个方法会使那个参数-1,如果参数==0时 执行dismiss方法。
+ (void)dismiss; 消失

+ (BOOL)isVisible; 是否正在显示

关于HUD的属性配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 背景颜色
+ (void)setBackgroundColor:(UIColor*)color; // default is [UIColor whiteColor]

// progress 和 label颜色
+ (void)setForegroundColor:(UIColor*)color; // default is [UIColor blackColor]

// progress 宽度
+ (void)setRingThickness:(CGFloat)width; // default is 4 pt

// 字体
+ (void)setFont:(UIFont*)font; // default is [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline]

// 消息的图片
+ (void)setInfoImage:(UIImage*)image; // default is the bundled info image provided by Freepik

// 成功时的图片
+ (void)setSuccessImage:(UIImage*)image; // default is the bundled success image provided by Freepik

// 失败时的图片
+ (void)setErrorImage:(UIImage*)image; // default is the bundled error image provided by Freepik

// 当HUD显示时,用户是否可以点击其他控件
+ (void)setDefaultMaskType:(SVProgressHUDMaskType)maskType; // default is SVProgressHUDMaskTypeNone

SVProgressHUDMaskTypeNone = 1, // 允许用户进行其他用户操作
SVProgressHUDMaskTypeClear, // 不允许用户进行其他用户操作
SVProgressHUDMaskTypeBlack, // 不允许用户进行其他用户操作,并且背景是黑色的
SVProgressHUDMaskTypeGradient // 允许用户进行其他用户操作,并且背景是渐变的黑色

// 可以延展一个图片必须设置
+ (void)setViewForExtension:(UIView*)view;

关于HUD的通知

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 在HUD外点击
extern NSString * const SVProgressHUDDidReceiveTouchEventNotification;

// 在HUD中点击
extern NSString * const SVProgressHUDDidTouchDownInsideNotification;

// 将要显示
extern NSString * const SVProgressHUDWillDisappearNotification;

// 已经显示
extern NSString * const SVProgressHUDDidDisappearNotification;

// 将要消失
extern NSString * const SVProgressHUDWillAppearNotification;

// 已经消失
extern NSString * const SVProgressHUDDidAppearNotification;

// HUD的状态
extern NSString * const SVProgressHUDStatusUserInfoKey;

在通知中 userInfo 字典中存储了 HUD 的状态,其 keySVProgressHUDStatusUserInfoKey

使用

  1. 在Podfile中安装
1
pod 'SVProgressHUD'
  • 导入SVProgressHUD
1
#import "SVProgressHUD.h"
  1. SVProgressHUD弹窗
  • SVProgressHUD可以显示一直旋转的进度条:
1
2
3
4
// 显示一直旋转的进度条
+ (void)show;
// 显示一直旋转的进度条和状态
+ (void)showWithStatus:(nullable NSString*)status;

  • SVProgressHUD可以显示具体进度的进度条。
1
2
3
4
// 显示进度条,progress为 0~1
+ (void)showProgress:(float)progress;
// 显示进度条和状态
+ (void)showProgress:(float)progress status:(nullable NSString*)status;

  • SVProgressHUD可以显示图标和状态。
1
2
3
4
5
6
7
8
9
// 显示消息图标和状态
+ (void)showInfoWithStatus:(nullable NSString*)status;
// 显示成功图标和状态
+ (void)showSuccessWithStatus:(nullable NSString*)status;
// 显示错误图标和状态
+ (void)showErrorWithStatus:(nullable NSString*)status;
// 显示自定义图标和状态
+ (void)showImage:(nonnull UIImage*)image status:(nullable NSString*)status;

  • SVProgressHUD关闭弹窗
1
2
3
4
5
6
7
8
9
// 关闭弹窗
+ (void)dismiss;
// 关闭弹窗,并执行completion
+ (void)dismissWithCompletion:(nullable SVProgressHUDDismissCompletion)completion;
// 延迟关闭弹窗
+ (void)dismissWithDelay:(NSTimeInterval)delay;
// 延迟关闭弹窗,并执行completion
+ (void)dismissWithDelay:(NSTimeInterval)delay completion:(nullable SVProgressHUDDismissCompletion)completion;

  1. 主要方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// 提示框背景和文字,默认是SVProgressHUDStyleLight
+ (void)setDefaultStyle:(SVProgressHUDStyle)style;
// 背景图层,默认SVProgressHUDMaskTypeNone
+ (void)setDefaultMaskType:(SVProgressHUDMaskType)maskType;
// 设置进度条样式,默认SVProgressHUDAnimationTypeFlat
+ (void)setDefaultAnimationType:(SVProgressHUDAnimationType)type;

// 提示框文字颜色,默认黑色,只在style为SVProgressHUDStyleCustom有效
+ (void)setForegroundColor:(nonnull UIColor*)color;
// 提示框背景颜色,默认白色,只在style为SVProgressHUDStyleCustom有效
+ (void)setBackgroundColor:(nonnull UIColor*)color;
// 背景图层,默认半透明,只在style为SVProgressHUDStyleCustom有效
+ (void)setBackgroundLayerColor:(nonnull UIColor*)color;

// 状态字体,默认[UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline]
+ (void)setFont:(nonnull UIFont*)font;
// 提示框的边角弯曲半径,默认14pt
+ (void)setCornerRadius:(CGFloat)cornerRadius;
// 转圈宽度,默认2pt
+ (void)setRingThickness:(CGFloat)ringThickness;
// 转圈半径,默认18pt
+ (void)setRingRadius:(CGFloat)radius;
// 没有文字时的转圈半径,默认24pt
+ (void)setRingNoTextRadius:(CGFloat)radius;

// 设置消息图片
+ (void)setInfoImage:(nonnull UIImage*)image;
// 设置成功图片
+ (void)setSuccessImage:(nonnull UIImage*)image;
// 设置错误图片
+ (void)setErrorImage:(nonnull UIImage*)image;
// 设置图片大小,默认28x28pt
+ (void)setImageViewSize:(CGSize)size;

  • SVProgressHUDStyle定义提示框背景和文字
1
2
3
4
5
6
typedef NS_ENUM(NSInteger, SVProgressHUDStyle) {
SVProgressHUDStyleLight, // 默认类型,白色半透明背景,黑色字体
SVProgressHUDStyleDark, // 黑色背景,白色字体
SVProgressHUDStyleCustom // 白色背景,黑色字体
};

  • SVProgressHUDMaskType定义背景图层
1
2
3
4
5
6
7
8
typedef NS_ENUM(NSUInteger, SVProgressHUDMaskType) {
SVProgressHUDMaskTypeNone = 1, // 默认类型,允许与后面界面交互
SVProgressHUDMaskTypeClear, // 不允许与后面界面交互
SVProgressHUDMaskTypeBlack, // 不允许与后面界面交互,背景图层为半透明
SVProgressHUDMaskTypeGradient, // 不允许与后面界面交互,背景图层为渐变变化
SVProgressHUDMaskTypeCustom // 不允许与后面界面交互,背景图层为自定义
};

  • SVProgressHUDAnimationType是转圈样式
1
2
3
4
5
typedef NS_ENUM(NSUInteger, SVProgressHUDAnimationType) {
SVProgressHUDAnimationTypeFlat, // 默认转圈样式
SVProgressHUDAnimationTypeNative // 菊花型转圈样式
};

  1. SVProgressHUD通知
1
2
3
4
5
6
7
8
9
10
// 提示框即将出现
NSString * const SVProgressHUDWillAppearNotification = @"SVProgressHUDWillAppearNotification";
// 提示框已经出现
NSString * const SVProgressHUDDidAppearNotification = @"SVProgressHUDDidAppearNotification";

// 提示框即将消失
NSString * const SVProgressHUDWillDisappearNotification = @"SVProgressHUDWillDisappearNotification";
// 提示框已经消失
NSString * const SVProgressHUDDidDisappearNotification = @"SVProgressHUDDidDisappearNotification";

  • Post title:OC三方框架06:SVProgressHUD探索
  • Post author:张建
  • Create time:2023-06-19 17:48:07
  • Post link:https://redefine.ohevan.com/2023/06/19/OC三方框架/OC三方框架06:SVProgressHUD探索/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
On this page
OC三方框架06:SVProgressHUD探索