每个爱啪啪里面都会有提示框,但是自己写太麻烦,还会遇到各种各样的bug。所以呢,封装一下HUD还是很有必要滴~~~,可以直接拿过去用奥,当成项目的工具类就好~!
part 1.代码部分
//
// QLShowHUD.h
// Ueater_v0.1_20170421
//
// Created by 符皓轩 on 2017/6/12.
// Copyright © 2017年 符琼林. All rights reserved.
//
#import <Foundation/Foundation.h>
@class QLShowHUD;
// 定义block
typedef void (^ConfigShowHUDBlock)(QLShowHUD *config);
typedef UIView *(^ConfigShowHUDCustomViewBlock)();
// 定义枚举值
typedef enum {
Fade = MBProgressHUDAnimationFade,
Zoom = MBProgressHUDAnimationZoom,
ZoomOut = MBProgressHUDAnimationZoomOut,
ZoomIn = MBProgressHUDAnimationZoomIn,
} HUDAnimationType;
@interface QLShowHUD : NSObject
@property (nonatomic, assign) HUDAnimationType animationStyle;///动画样式
@property (nonatomic, strong) NSString *text;/// 文本
@property (nonatomic, strong) UIFont *textFont;/// 文本字体
@property (nonatomic, strong) UIView *customView;/// 自定义view 37x37尺寸
// 只显示文本的相关设置
@property (nonatomic, assign) BOOL showTextOnly;///只显示文本
@property (nonatomic, assign) float margin;/// 边缘留白
// 颜色设置(设置了颜色之后,透明度就会失效)
@property (nonatomic, strong) UIColor *backgroundColor;/// 背景颜色
@property (nonatomic, strong) UIColor *labelColor;/// 文本颜色
@property (nonatomic, assign) float opacity;/// 透明度
@property (nonatomic, assign) float cornerRadius;/// 圆角
///仅仅显示文本并持续几秒的方法
/* - 使用示例 -
[ShowHUD showTextOnly:@"请稍后,显示不了..."
configParameter:^(ShowHUD *config) {
config.margin = 10.f; // 边缘留白
config.opacity = 0.7f; // 设定透明度
config.cornerRadius = 2.f; // 设定圆角
} duration:3 inView:self.view];
*/
+ (void)showTextOnly:(NSString *)text configParameter:(ConfigShowHUDBlock)config duration:(NSTimeInterval)sec inView:(UIView *)view;
///显示文本与菊花并持续几秒的方法(文本为nil时只显示菊花)
/* - 使用示例 -
[ShowHUD showText:@"请稍后,显示不了..."
configParameter:^(ShowHUD *config) {
config.margin = 10.f; // 边缘留白
config.opacity = 0.7f; // 设定透明度
config.cornerRadius = 2.f; // 设定圆角
} duration:3 inView:self.view];
*/
+ (void)showText:(NSString *)text configParameter:(ConfigShowHUDBlock)config duration:(NSTimeInterval)sec inView:(UIView *)view;
///加载自定义view并持续几秒的方法
/* - 使用示例 -
[ShowHUD showText:@"请稍后,显示不了..."
configParameter:^(ShowHUD *config) {
config.margin = 10.f; // 边缘留白
config.opacity = 0.7f; // 设定透明度
config.cornerRadius = 2.f; // 设定圆角
} duration:3 inView:self.view];
*/
+ (void)showCustomView:(ConfigShowHUDCustomViewBlock)viewBlock configParameter:(ConfigShowHUDBlock)config duration:(NSTimeInterval)sec inView:(UIView *)view;
+ (instancetype)showTextOnly:(NSString *)text configParameter:(ConfigShowHUDBlock)config inView:(UIView *)view;
+ (instancetype)showText:(NSString *)text configParameter:(ConfigShowHUDBlock)config inView:(UIView *)view;
+ (instancetype)showCustomView:(ConfigShowHUDCustomViewBlock)viewBlock configParameter:(ConfigShowHUDBlock) config inView:(UIView *)view;
- (void)hide;
@end
代码部分++
//
// QLShowHUD.m
// Ueater_v0.1_20170421
//
// Created by 符皓轩 on 2017/6/12.
// Copyright © 2017年 符琼林. All rights reserved.
//
#ifdef DEBUG
#define ShowHUD_DLog(fmt, ...) NSLog((@"ShowHUD.m:%s:%d" fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#define ShowHUD_DLog(...)
#endif
#import "QLShowHUD.h"
@interface QLShowHUD ()<MBProgressHUDDelegate>
{
MBProgressHUD *_hud;
}
@end
@implementation QLShowHUD
- (instancetype)initWithView:(UIView *)view
{
if (view == nil) {
return nil;
}
self = [super init];
if (self) {
_hud = [[MBProgressHUD alloc] initWithView:view];
_hud.delegate = self;
_hud.animationType = MBProgressHUDAnimationZoom; // 默认动画样式
_hud.removeFromSuperViewOnHide = YES;// 该视图隐藏后则自动从父视图移除掉
_hud.label.numberOfLines = 0;
_hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor;
[view addSubview:_hud];
}
return self;
}
- (void)hide:(BOOL)hide afterDelay:(NSTimeInterval)delay
{
[_hud hideAnimated:hide afterDelay:delay];
}
- (void)hide
{
[_hud hideAnimated:YES];
}
- (void)show:(BOOL)show
{
// 根据属性判断是否要显示文本
if (_text != nil && _text.length != 0) {
_hud.label.text = _text;
}
// 设置文本字体
if (_textFont) {
_hud.label.font = _textFont;
}
// 如果设置这个属性,则只显示文本
if (_showTextOnly == YES && _text != nil && _text.length != 0) {
_hud.mode = MBProgressHUDModeText;
}
// 设置背景色
if (_backgroundColor) {
_hud.bezelView.color = _backgroundColor;
}
// 文本颜色
if (_labelColor) {
_hud.label.textColor = _labelColor;
}
// 设置圆角
if (_cornerRadius) {
_hud.bezelView.layer.cornerRadius = _cornerRadius;
}
// 设置透明度
if (_opacity) {
_hud.opacity = _opacity;
}
// 自定义view
if (_customView) {
_hud.mode = MBProgressHUDModeCustomView;
_hud.customView = _customView;
}
// 边缘留白
if (_margin > 0) {
_hud.margin = _margin;
}
[_hud showAnimated:show];
}
#pragma mark - HUD代理方法
- (void)hudWasHidden:(MBProgressHUD *)hud
{
[_hud removeFromSuperview];
_hud = nil;
}
#pragma mark - 重写setter方法
@synthesize animationStyle = _animationStyle;
- (void)setAnimationStyle:(HUDAnimationType)animationStyle
{
_animationStyle = animationStyle;
_hud.animationType = (MBProgressHUDAnimation)_animationStyle;
}
- (HUDAnimationType)animationStyle
{
return _animationStyle;
}
#pragma mark - 便利的方法
+(void)showTextOnly:(NSString *)text configParameter:(ConfigShowHUDBlock)config duration:(NSTimeInterval)sec inView:(UIView *)view
{
QLShowHUD *hud = [[QLShowHUD alloc] initWithView:view];
hud.text = text;
hud.showTextOnly = YES;
hud.margin = 10.f;
// 配置额外的参数
config(hud);
//默认样式
hud.labelColor = [UIColor whiteColor];
hud.backgroundColor = [UIColor blackColor];
hud.cornerRadius = 10;
// 显示
[hud show:YES];
// 延迟sec后消失
[hud hide:YES afterDelay:sec];
}
+(void)showText:(NSString *)text configParameter:(ConfigShowHUDBlock)config duration:(NSTimeInterval)sec inView:(UIView *)view
{
QLShowHUD *hud = [[QLShowHUD alloc] initWithView:view];
hud.text = text;
hud.margin = 10.f;
// 配置额外的参数
config(hud);
// 显示
[hud show:YES];
// 延迟sec后消失
[hud hide:YES afterDelay:sec];
}
+(void)showCustomView:(ConfigShowHUDCustomViewBlock)viewBlock configParameter:(ConfigShowHUDBlock)config duration:(NSTimeInterval)sec inView:(UIView *)view
{
QLShowHUD *hud = [[QLShowHUD alloc] initWithView:view];
hud.margin = 10.f;
// 配置额外的参数
config(hud);
// 自定义View
hud.customView = viewBlock();
// 显示
[hud show:YES];
[hud hide:YES afterDelay:sec];
}
+(instancetype)showTextOnly:(NSString *)text configParameter:(ConfigShowHUDBlock)config inView:(UIView *)view
{
QLShowHUD *hud = [[QLShowHUD alloc] initWithView:view];
hud.text = text;
hud.showTextOnly = YES;
hud.margin = 10.f;
// 配置额外的参数
config(hud);
// 显示
[hud show:YES];
return hud;
}
+(instancetype)showText:(NSString *)text configParameter:(ConfigShowHUDBlock)config inView:(UIView *)view
{
QLShowHUD *hud = [[QLShowHUD alloc] initWithView:view];
hud.text = text;
hud.margin = 10.f;
// 配置额外的参数
config(hud);
// 显示
[hud show:YES];
return hud;
}
+ (instancetype)showCustomView:(ConfigShowHUDCustomViewBlock)viewBlock configParameter:(ConfigShowHUDBlock)config inView:(UIView *)view
{
QLShowHUD *hud = [[QLShowHUD alloc] initWithView:view];
hud.margin = 10.f;
// 配置额外的参数
config(hud);
// 自定义View
hud.customView = viewBlock();
// 显示
[hud show:YES];
return hud;
}
- (void)dealloc
{
ShowHUD_DLog(@"资源释放了,没有泄露^_^");
}
@end
part 2.调用
[QLShowHUD showTextOnly:@"等小姐姐告诉我该干啥" configParameter:^(JKShowHUD *config) {
config.cornerRadius = 20;
config.backgroundColor = [UIColor blackColor];
config.labelColor = [UIColor whiteColor];
} duration:1.0 inView:self.view];
觉得太麻烦的话,可以直接更改内部代码,在内部配置好默认样式,直接调用即可
[QLShowHUD showTextOnly:@"等小姐姐告诉我该干啥" configParameter:^(JKShowHUD *config) {
} duration:1.0 inView:self.view];
方法内部修改细节
+(void)showTextOnly:(NSString *)text configParameter:(ConfigShowHUDBlock)config duration:(NSTimeInterval)sec inView:(UIView *)view
{
QLShowHUD *hud = [[QLShowHUD alloc] initWithView:view];
hud.text = text;
hud.showTextOnly = YES;
hud.margin = 10.f;
config(hud);
//默认样式
hud.labelColor = [UIColor whiteColor];
hud.backgroundColor = [UIColor blackColor];
hud.cornerRadius = 10;
[hud show:YES];
[hud hide:YES afterDelay:sec];
}
part 3.效果图
提示框.pngpart 4. 懒人传送门
点我点我QLShowHUD
还有其他效果就不一一展示啦,有兴趣的小可爱自己玩~觉得不错的给个star...
网友评论