iOS Toast封装 基于SVProgressHUD 两分钟封装很好用的安卓版Toast 弹窗效果封装
这里是文章索引
先看效果
基于SV的好处
例如网络加载需要用SV显示加载信息,但是加载成功如果是其他toast还需要调用SV的dismiss然后才能显示toast 这里直接显示toast即可方便,SV底层是用的单例实现的,这里随意弹toast 随意弹SVProgress都不会有什么问题。还可以增加toast结束回调,详情请看代码。
代码
这里封装四个方法,自由控制显示时间
YHToastHUD.h
//
// YHToastHUD.h
// Created by huizai on 2018/10/11.
// Copyright © 2018年 caikr. All rights reserved.
//
#import "SVProgressHUD.h"
typedef void (^ToastHUDDismissCompletion)(void);
@interface YHToastHUD : SVProgressHUD
+(void)showToast:(NSString*)msg;
+(void)showToast:(NSString*)msg andDuration:(CGFloat)duration;
+(void)showToast:(NSString*)msg completion:(nullable ToastHUDDismissCompletion)completion;
+(void)showToast:(NSString*)msg andDuration:(CGFloat)duration completion:(nullable ToastHUDDismissCompletion)completion;
@end
YHToastHUD.m
//
// YHToastHUD.m
// Created by huizai on 2018/10/11.
// Copyright © 2018年 caikr. All rights reserved.
//
#import "YHToastHUD.h"
@implementation YHToastHUD
+(void)showToast:(NSString*)msg andDuration:(CGFloat)duration{
[self showToast:msg andDuration:duration completion:nil];
}
+(void)showToast:(NSString*)msg{
[self showToast:msg andDuration:1.2];
}
+(void)showToast:(NSString*)msg completion:(nullable ToastHUDDismissCompletion)completion{
[self showToast:msg andDuration:1.2 completion:^{
completion();
}];
}
+(void)showToast:(NSString*)msg andDuration:(CGFloat)duration completion:(nullable ToastHUDDismissCompletion)completion{
[SVProgressHUD dismiss];
[SVProgressHUD setDefaultMaskType:SVProgressHUDMaskTypeClear];
[SVProgressHUD setDefaultStyle:SVProgressHUDStyleDark];
[SVProgressHUD setImageViewSize:CGSizeMake(0, -1)];
[SVProgressHUD showImage:[UIImage new] status:msg];
[SVProgressHUD dismissWithDelay:duration completion:^{
[SVProgressHUD setDefaultStyle:SVProgressHUDStyleLight];
[SVProgressHUD setImageViewSize:CGSizeMake(28, 28)];
[SVProgressHUD setDefaultMaskType:SVProgressHUDMaskTypeBlack];
if (completion) {
completion();
}
}];
}
@end
注意,需要修改一下SV默认配置 在AppDelegate里面
都修改什么一看即明白
[SVProgressHUD setFont:[UIFont systemFontOfSize:RATIO(16)]];
//这个必须要加保证跳转页面前SV要dimiss,
[SVProgressHUD setDefaultMaskType:SVProgressHUDMaskTypeBlack];