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“也就是这个
里面可以看见
这些东西就是调用的时候的默认值,更改这些,项目里面使用的地方的默认值就都会更改咯。
啥玩意?你说以前调用太麻烦?
那么我们这样
瞅着这个属性没,我们来改变一下他,啥?你不知道改成啥?来来来,看下面。
BR_LoadStateLoading = 0, /// 显示默认的加载 BR_LoadStateSuccess = 1, /// 显示默认的成功 BR_LoadStateError = 2, /// 显示默认的错误 BR_LoadStateNoNetWork = 3, /// 显示默认的没有网络 BR_LoadStateHide = 4, /// 隐藏HUD直接改成这个枚举值就可以显示在宏里面设定好的样式了。
啥玩意儿?你又说图片难看,那你自己去改咯。
把Error和Success这两个图片替换成同名图片就可以了,默认的图片就会更改,或者你可以把宏定义里面的图片直接改成你想要用的图片名。
有的时候我们也会需求显示许多不同的文字,比如@"老司机快开车",@"老司机带带我",那么我们这样
这里有许多方法,不过这些方法都是单例调用,不可以重复显示,属于一对一服务。
啥?就没有多对一服务?真low!那不可能(MDZZ),你想要多少对一都可以,因为我们有重用池啊。
"BR_ReuseHUDView"这个就是我们的重用池类(其实就是写了个简单的判断复用的东西,非常low。),高大上,可以避免空间浪费,当然,快速调用的时候可以不用他,我们直接来调用方法就可以。
这些方法,就是使用重用机制创建出来的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创建的时候的值,这样比较方便,但是在使用过程中就不可以更改了。
属性如下
好了,这些就是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;#p#分页标题#e#注:如果使用ReminderView的时候有自动调整StatusBar文字颜色的需求,需要在info.plist文件里加上View controller-based status bar appearance设置为BOOL类型,值为NO,就可以了。
差不多就这些东西了,喜欢的小伙伴可以加我微信,底下是我的二维码,也可以在评论区跟我侃侃山。