项目介绍:

BRReminderHUD.zip
(941.98 KB, 下载次数: 321)
2016-12-26 17:54 上传
点击文件名下载附件
为了满足现在的多元化啊等等等元素(其实是为了装X),写了一个HUD框架,功能还算不少(其实不多),效果看首页,接下来介绍怎么用。很多时候我们用HUD的用途很简单,就是在Window上想要显示一句话,提醒一下用户,你XXX成功了,你XXX失败了,App正在OOO,差不多就这样。
所以说,首先给使用者提供了两个比较方便的东西,写好的类目,在UIVIew类里面可以直接self.来调用,在Controller里面可以直接self.view来调用。
接下来(开始装X):
首先引用UIView的类目文件,用来快速调用BR_HUDView。
”UIView+BR_HUD.h“也就是这个
里面可以看见
#define BR_SuccessImage @"BR_Success.png"
#define BR_ErrorImage @"BR_Error.png"
#define BR_NoNetWorkImage @"BR_Error.png"
#define BR_DefaultSize CGSizeMake(30, 30)
#define BR_LoadingPrompt @"正在加载..."
#define BR_SuccessPrompt @"加载成功!"
#define BR_ErrorPrompt @"加载失败!"
#define BR_NoNetWorkPrompt @"没有找到网络连接..."
#define BR_PromptCenter CGPointMake([UIScreen mainScreen].bounds.size.width / 2.0, [UIScreen mainScreen].bounds.size.height * 0.75)
#define BR_DefaultDelayed 1 /// 默认的延迟隐藏时间
这些东西就是调用的时候的默认值,更改这些,项目里面使用的地方的默认值就都会更改咯。
啥玩意?你说以前调用太麻烦?
那么我们这样
/**
显示默认的状态
*/
@property (assign , nonatomic) BR_LoadState loadingState;
瞅着这个属性没,我们来改变一下他,啥?你不知道改成啥?来来来,看下面。
BR_LoadStateLoading = 0, /// 显示默认的加载
BR_LoadStateSuccess = 1, /// 显示默认的成功
BR_LoadStateError = 2, /// 显示默认的错误
BR_LoadStateNoNetWork = 3, /// 显示默认的没有网络
BR_LoadStateHide = 4, /// 隐藏HUD
直接改成这个枚举值就可以显示在宏里面设定好的样式了。
啥玩意儿?你又说图片难看,那你自己去改咯。

把Error和Success这两个图片替换成同名图片就可以了,默认的图片就会更改,或者你可以把宏定义里面的图片直接改成你想要用的图片名。
有的时候我们也会需求显示许多不同的文字,比如@”老司机快开车”,@”老司机带带我”,那么我们这样
/**
显示加载条,默认的图片,上方的宏定义。
@param prompt 提示内容
*/
- (void)showLoading : (NSString *)prompt;
/**
显示错误提示,默认的图片。
@param prompt 提示内容
*/
- (void)showError : (NSString *)prompt;
/**
显示成功提示,默认的图片。
@param prompt 提示内容
*/
- (void)showSuccess : (NSString *)prompt;
/**
显示纯文字提示
@param prompt 提示内容
*/
- (void)showPrompt : (NSString *)prompt;
/**
显示gif图片和提示内容
@param gifName gif图片
@param prompt 提示内容
*/
- (void)showGif : (NSString *)gifName
Size : (CGSize)size
Prompt : (NSString *)prompt;
这里有许多方法,不过这些方法都是单例调用,不可以重复显示,属于一对一服务。
啥?就没有多对一服务?真low!那不可能(MDZZ),你想要多少对一都可以,因为我们有重用池啊。
“BR_ReuseHUDView”这个就是我们的重用池类(其实就是写了个简单的判断复用的东西,非常low。),高大上,可以避免空间浪费,当然,快速调用的时候可以不用他,我们直接来调用方法就可以。
/**
重用机制,显示到view上,非固定window
@param customView 自定义的View
@param prompt 提示内容
*/
- (void)showHUDWithCustomView : (UIView *)customView
Size : (CGSize)size
Prompt : (NSString *)prompt;
/**
重用机制,显示到view上,非固定window
@param customView 自定义的View
@param prompt 提示内容
@param hudBlock 返回hudView
*/
- (void)showHUDWithCustomView : (UIView *)customView
Prompt : (NSString *)prompt
Size : (CGSize)size
HudBlock : (BRHudBlock)hudBlock;
/// 重用机制,显示到view上,非固定window
- (void)showPrompt : (NSString *)prompt
HudBlock : (BRHudBlock)hudBlock;
/// 重用机制,显示到view上,非固定window
- (void)showError : (NSString *)prompt
HudBlock : (BRHudBlock)hudBlock;
/// 重用机制,显示到view上,非固定window
- (void)showSuccess : (NSString *)prompt
HudBlock : (BRHudBlock)hudBlock;
/// 重用机制,显示到view上,非固定window
- (void)showLoading : (NSString *)prompt
HudBlock : (BRHudBlock)hudBlock;
/// 重用机制,显示到view上,非固定window
- (void)showGif : (NSString *)gifName
Size : (CGSize)size
Prompt : (NSString *)prompt
HudBlock : (BRHudBlock)hudBlock;
这些方法,就是使用重用机制创建出来的HUDView来显示提示等等等等东西,也就是传说中的可以多对一。
注意:既然是多对一,肯定有缺点,我们的这套HUDView里面有使用“FLAnimatedImage”这个Gif图片加载框架,优化了许多gif图片加载时内存消耗的不足,但是在加载gif的时候尽量还是不要使用重用池机制来显示,会很占内存。(多对一已经很羞射了,要是还会动,怎会还有力(jing)气(li))
有些小伙伴说,我不想用你封装好的类目,我要自己定义,自己搞。好,也可以,你可以直接调用HUDView的单例,或者在上面的那个“ BR_ReuseHUDView”类里面的br_getNotBusyHudView方法也可以帮你快速的找到一个当前没有在显示中的HUDView。
“BR_HUDView”也就是我们这个HUD框架里面的核心View,所有看见的HUD显示都是它,内部提供了很多方法,首先他有一个初始化的值,有两种布局方式(横向和竖向),三种显示的时候手势遮挡方式(只有导航栏可以点击,整个页面都可以点击,整个页面都不可以点击**只有在keyWindow上显示的时候设置BR_NavigationCanClick才会管用)
在初始化的时候,会去“BRHUDDefaultModel”类里面的单例去找初始化值,所以我们可以用更改BRHUDDefaultModel里面的值来更改HUDView初始化的时候值(在使用过程中),当然,也可以直接去更改BRHUDDefaultModel创建的时候的值,这样比较方便,但是在使用过程中就不可以更改了。
属性如下
/**
* label字体
*/
@property (strong , nonatomic) UIFont * promptFont;
/**
* 显示HUD的遮挡交互样式
*/
@property (assign , nonatomic) BR_HUDShowTYpe showType;
/**
* HUD的布局样式
*/
@property (assign , nonatomic) BR_LayoutType layoutType;
/**
* 最大宽度占View的屏幕比例
*/
@property (assign , nonatomic) CGFloat widthScale;
/**
* 背景透明度
*/
@property (assign , nonatomic) CGFloat lucencyScale;
/**
* 圆角数值,默认是8;
*/
@property (assign , nonatomic) CGFloat roundCorner;
/**
* 内部view至backView的上间距
*/
@property (assign , nonatomic) CGFloat backTop;
/**
* 内部view至backView的左间距
*/
@property (assign , nonatomic) CGFloat backLeft;
/**
* 内部view至backView的右间距
*/
@property (assign , nonatomic) CGFloat backRight;
/**
* 内部view至backView的下间距
*/
@property (assign , nonatomic) CGFloat backBottom;
/**
* image和label中间的高度
*/
@property (assign , nonatomic) CGFloat centerHeight;
/**
* promptLabel最后可以显示几行文字,0就是无限制,默认是2.
*/
@property (assign , nonatomic) CGFloat labelLines;
/**
* 提示label字体颜色
*/
@property (strong , nonatomic) UIColor * promptColor;
/**
* prompt对其方式
*/
@property (assign , nonatomic) NSTextAlignment promptAlignment;
/**
* 显示HUD的背景颜色,可以透明
*/
@property (strong , nonatomic) UIColor * backColor;
/**
* 提示的文字,可以为@“”或nil,就是没有。
*/
@property (strong , nonatomic) NSString * promptString;
/**
HUD显示时window的位置
*/
@property (assign , nonatomic) CGPoint bgViewCenter;```
HUDView的方法如下:
[mw_shl_code=actionscript3,true]/**
* 显示加载框,GIF加文字
*
* @param gifName gif图片的名字,不需要加后缀
* @param prompt 提示的文字,传空或者@“”的话会自动高度为0.
* @param gifImageSize gif图片显示的大小
* @param view 显示到哪个View上
* @param block 点击了当前触发block回调
*/
+ (void)showHUDWithGif : (NSString *)gifName
Prompt : (NSString *)prompt
GifImageSize : (CGSize)gifImageSize
View : (UIView *)view
ClickHUD : (ClickHUD)block;
/**
* 显示加载框,Image加文字
*
* @param imageName 需要带后缀,静态图片的名字
* @param prompt 提示的文字,传空或者@“”的话会自动高度为0.
* @param gifImageSize gif图片显示的大小
* @param view 显示到哪个View上
* @param block 点击了当前触发block回调
*/
+ (void)showHUDWithImage : (NSString *)imageName
Prompt : (NSString *)prompt
GifImageSize : (CGSize)gifImageSize
View : (UIView *)view
ClickHUD : (ClickHUD)block;
/**
* 显示提示框,纯文字。
*
* @param prompt 文字内容
* @param view 显示到哪个View上
* @param block 点击了当前触发block回调
*/
+ (void)showHUDWithPrompt : (NSString *)prompt
View : (UIView *)view
ClickHUD : (ClickHUD)block;
/**
* 隐藏HUD
*/
+ (void)hideHUD;
/**
多长时间后隐藏HUD
@param delayed 多长时间后隐藏HUD
*/
+ (void)hideHUDWithDelayed : (CGFloat)delayed;
#pragma mark ----- 实例方法 -----
/// 初始化
- (void)initializeHUDView;
/**
* 显示自定义View,文字
*
*@param customView 自定义view
*@param prompt 提示的文字,传nil或者@“”的话会自动高度为0.
*@param customViewSize customView显示的大小
*@param view 显示到哪个view上
*/
- (void)showHUDWithCustomView : (UIView *)customView
Prompt : (NSString *)prompt
CustomViewSize : (CGSize)customViewSize
View : (UIView *)view;
/**
* 显示加载框,GIF加文字
*
* @param gifName gif图片的名字,不需要加后缀
* @param prompt 提示的文字,传nil或者@“”的话会自动高度为0.
* @param gifImageSize gif图片显示的大小
* @param view 显示到哪个View上
*/
- (void)showHUDWithGif : (NSString *)gifName
Prompt : (NSString *)prompt
GifImageSize : (CGSize)gifImageSize
View : (UIView *)view;
/**
* 显示加载框,Image加文字
*
* @param imageName 需要带后缀,静态图片的名字
* @param prompt 提示的文字,传空或者@“”的话会自动高度为0.
* @param gifImageSize gif图片显示的大小
* @param view 显示到哪个View上
*/
- (void)showHUDWithImage : (NSString *)imageName
Prompt : (NSString *)prompt
GifImageSize : (CGSize)gifImageSize
View : (UIView *)view;
/**
* 显示提示框,纯文字。
*
* @param prompt 文字内容
* @param view 显示到哪个View上
*/
- (void)showHUDWithPrompt : (NSString *)prompt
View : (UIView *)view;
/**
* 隐藏HUD
*/
- (void)hideHUD;
/**
多长时间后隐藏HUD
@param delayed 多长时间后隐藏HUD
*/
- (void)hideHUDWithDelayed : (CGFloat)delayed;
好了,这些就是HUD的大概内容(全部内容),接下来说说ReminderView。
Reminder相对功能少一些,也单一一些,但主要在于自定义,需要什么样子自己去添加视图数组来实现,它只负责弹弹弹就可以了。
还是老规矩:
一大堆的默认值

属性控制弹出
typedef enum{
BR_ReminderShowStyleFailure = 1,
BR_ReminderShowStyleSuccess = 2,
}BR_ReminderShowStyle;
/**
设置showStyle,显示默认提示。
*/
@property (assign , nonatomic) BR_ReminderShowStyle reminderStyle;
还有各种方法
#pragma mark ----- 显示到调用的View上,需要自己定义宽度 -----
/**
显示错误信息
@param prompt 信息提示
@param reminderView 返回显示的reminderView
*/
- (void)showReminderFailure : (NSString *)prompt
Size : (CGSize)size
BRReminderViewBlock : (BRReminderViewBlock)reminderView;
/**
显示成功信息
@param prompt 信息提示
@param reminderView 返回显示的reminderView
*/
- (void)showReminderSuccess : (NSString *)prompt
Size : (CGSize)size
BRReminderViewBlock : (BRReminderViewBlock)reminderView;
/**
显示全部自定的View,view放在数组里
@param customViewArray 自定义View的数组,view需要些好布局位置和大小
@param reminderView 返回显示的reminderView
*/
- (void)showReminderCustomViewArray : (NSArray *)customViewArray
Size : (CGSize)size
BRReminderViewBlock : (BRReminderViewBlock)reminderView;
#pragma mark ----- 显示到window上 -----
/**
显示错误信息
@param prompt 信息提示
@param reminderView 返回显示的reminderView
*/
- (void)showReminderFailureWithWindow : (NSString *)prompt
Height : (CGFloat)height
BRReminderViewBlock : (BRReminderViewBlock)reminderView;
/**
显示成功信息
@param prompt 信息提示
@param reminderView 返回显示的reminderView
*/
- (void)showReminderSuccessWithWindow : (NSString *)prompt
Height : (CGFloat)height
BRReminderViewBlock : (BRReminderViewBlock)reminderView;
/**
显示全部自定的View,view放在数组里
@param customViewArray 自定义View的数组,view需要些好布局位置和大小
@param reminderView 返回显示的reminderView
*/
- (void)showReminderCustomViewArrayWithWindow : (NSArray *)customViewArray
Height : (CGFloat)height
BRReminderViewBlock : (BRReminderViewBlock)reminderView;
#pragma mark ----- 单例调用,添加到Window上 -----
/**
单例调用显示错误信息
@param prompt 显示的内容
@param reminderView 显示的view回调,可做更改。
*/
- (void)showReminderFailure:(NSString *)prompt
BRReminderViewBlock:(BRReminderViewBlock)reminderView;
/**
单例调用显示正确信息
@param prompt 显示的内容
@param reminderView 显示的view回调,可做更改。
*/
- (void)showReminderSuccess:(NSString *)prompt
BRReminderViewBlock:(BRReminderViewBlock)reminderView;```相对应的也有一个重用池的类“BR_ReuseReminderView”
还有ReminderView的属性设置
[mw_shl_code=actionscript3,true]/**
透明图层回调
*/
@property (copy , nonatomic) BR_NULLBLOCK tapBlock;
/**
是否开启手势
*/
@property (assign , nonatomic) BOOL startSwipe;
/**
是否开启点击透明图层回调,BR_PartScreen没有透明图层
*/
@property (assign , nonatomic) BOOL isTapTrans;
/**
是否正在显示
*/
@property (assign , nonatomic) BOOL isShow;
/**
显示bgView的背景颜色
*/
@property (strong , nonatomic) UIColor * bgColor;
/**
目前的状态
*/
@property (assign , nonatomic) BR_ReminderState state;
/**
显示时候的手势覆盖状态
*/
@property (assign , nonatomic) BR_ReminderViewType showType;
还有根类方法
/**
显示到window上
@param viewArray 需要添加到ReminderView上的array创建好调好大小位置之后直接加入数组就可以了。
*/
- (void)showWithWindow : (CGSize)size
Animate : (BOOL)animate
ViewArray : (NSArray <UIView *> *)viewArray
Complete : (BR_NULLBLOCK)complete;
/**
显示到View上
@param view 显示到哪个view上
@param size 大小
@param viewArray 需要添加到ReminderView上的array创建好调好大小位置之后直接加入数组就可以了。
*/
- (void)showWithView : (UIView *)view
Size : (CGSize)size
Animate : (BOOL)animate
ViewArray : (NSArray <UIView *> *)viewArray
Complete : (BR_NULLBLOCK)complete;
/**
显示到window上
@param viewArray 需要添加到ReminderView上的array创建好调好大小位置之后直接加入数组就可以了。
*/
- (void)showWithWindow : (CGSize)size
ViewArray : (NSArray <UIView *> *)viewArray
Animate : (BOOL)animate;
/**
显示到View上
@param view 显示到哪个view上
@param size 大小
@param viewArray 需要添加到ReminderView上的array创建好调好大小位置之后直接加入数组就可以了。
*/
- (void)showWithView : (UIView *)view```
Size : (CGSize)size
ViewArray : (NSArray <UIView *> *)viewArray
Animate : (BOOL)animate;
/// 隐藏
- (void)dismiss : (BOOL)animate;
/**
延时隐藏
@param animate 是否启用动画
@param delayed 延时时间
*/
- (void)dismiss : (BOOL)animate
Delayed : (CGFloat)delayed;
注:如果使用ReminderView的时候有自动调整StatusBar文字颜色的需求,需要在info.plist文件里加上View controller-based status bar appearance设置为BOOL类型,值为NO,就可以了。
差不多就这些东西了,喜欢的小伙伴可以加我微信,底下是我的二维码,也可以在评论区跟我侃侃山。

