欢迎光临
我们一直在努力

BRReminderHUD 一款多功能HUD和ReminderView

建站超值云服务器,限时71元/月

BRReminderHUD 一款多功能HUD和ReminderView

项目介绍:



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,就可以了。

差不多就这些东西了,喜欢的小伙伴可以加我微信,底下是我的二维码,也可以在评论区跟我侃侃山。

图片描述

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » BRReminderHUD 一款多功能HUD和ReminderView
分享到: 更多 (0)