SVProgressHUD源码记一:ReadMe解读
2015-12-21 本文已影响4511人
One9398
基本使用
SVProgressHUD
为单例对象,不要手动地实例化,直接使用[SVProgressHUD method]
方式.
使用场景主要为执行耗时任务时进行遮罩显示或者简单信息的提示来增加用户体验,比如下拉刷新、无限滚动、发送远程消息.
[SVProgressHUD show]; //显示HUD
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// time-consuming task 执行耗时操作(常常为网络访问)
dispatch_async(dispatch_get_main_queue(), ^{
[SVProgressHUD dismiss]; // 消除HUD
});
});
显示HUD
-
针对任务的执行状态不确定时的HUD显示
+ (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;
-
快速显示信息在HUD销毁后,显示时间0.5~5.0s间
+ (void)showInfoWithStatus:(NSString *)string; + (void)showSuccessWithStatus:(NSString*)string; + (void)showErrorWithStatus:(NSString *)string; + (void)showImage:(UIImage*)image status:(NSString*)string;
自定义
+ (void)setDefaultStyle:(SVProgressHUDStyle)style; // default is SVProgressHUDStyleLight HUD样式设置
+ (void)setDefaultMaskType:(SVProgressHUDMaskType)maskType; // default is SVProgressHUDMaskTypeNone HUD背景遮罩层设置
+ (void)setDefaultAnimationType:(SVProgressHUDAnimationType)type; // default is SVProgressHUDAnimationTypeFlat HUD动画类型设置
+ (void)setMinimumSize:(CGSize)minimumSize; // default is CGSizeZero, can be used to avoid resizing for a larger message HUD显示文字信息的最小尺寸
+ (void)setRingThickness:(CGFloat)width; // default is 2 pt HUD圆环宽度设置
+ (void)setRingRadius:(CGFloat)radius; // default is 18 pt HUD圆环半径设置
+ (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] HUD文本字体设置
+ (void)setForegroundColor:(UIColor*)color; // default is [UIColor blackColor], only used for SVProgressHUDStyleCustom HUD前景色设置
+ (void)setBackgroundColor:(UIColor*)color; // default is [UIColor whiteColor], only used for SVProgressHUDStyleCustom HUD背景色设置
+ (void)setInfoImage:(UIImage*)image; // default is the bundled info image provided by Freepik HUD内容图片设置
+ (void)setSuccessImage:(UIImage*)image; // default is bundled success image from Freepik HUD成功样式的图片设置
+ (void)setErrorImage:(UIImage*)image; // default is bundled error image from Freepik HUD错误样式时图片设置
+ (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 HUD销毁的最短时间设置
- 支持
UIAppearance
协议方法,能够同一配置.
提示
SVProgressHUD
提供两种配置好的样式
-
SVProgressHUDStyleLight
: 白色背景,黑色圆环和文字 -
SVProgressHUDStyleDark
: 黑色背景,白色圆环和文字 - 若要自定义必须先设
setDefaultStyle
为SVProgressHUDStyleCustom
,再进行setForegroundColor
,setBackgroundColor
的配置.
通知监听
SVProgressHUD
提供了四个通知方法,来对应当HUD出现和销毁时.
-
SVProgressHUDWillAppearNotification
当HUD显示动画开始时 -
SVProgressHUDDidAppearNotification
当HUD已经显示 -
SVProgressHUDWillDisappearNotification
当HUD销毁动画开始时 -
SVProgressHUDDidDisappearNotification
当HUD已经销毁
其通知的userinfo
字典存储了HUD的状态,其key
为
SVProgressHUDStatusUserInfoKey
.
SVProgressHUD
还有SVProgressHUDDidReceiveTouchEventNotification
和SVProgressHUDDidReceiveTouchEventNotification
两个通知检测用户对HUD的交互,它们的userinfo
为空,但其object
为UIEvent
对象.
App扩展
在App扩展中使用SVProgressHUD
时,需要用到#define SV_APP_EXTENSIONS
避免使用到不可用的API,另外在扩展控制器中针对self.view
调用setViewForExtension
.