iOS Toast封裝 基於SVProgressHUD 兩分鐘封裝很好用的安卓版Toast 彈窗效果封裝
阿新 • • 發佈:2018-12-15
先看效果
基於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];