1. 程式人生 > >iOS Toast封裝 基於SVProgressHUD 兩分鐘封裝很好用的安卓版Toast 彈窗效果封裝

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];