BBAToastView.h 5.27 KB
//
//  BBAToastView.h
//  BBAUIKit
//
//  Created by zhangyunchao on 2020/7/16.
//  Copyright © 2020 Baidu. All rights reserved.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

FOUNDATION_EXPORT NSString * const KBBAToastSaveSuccessBig; // 大号保存成功,适用上图下文
FOUNDATION_EXPORT NSString * const KBBAToastSaveFailBig; // 大号保存失败,适用上图下文
FOUNDATION_EXPORT NSString * const KBBAToastSaveSuccessLittle; // 小号保存成功,适用左图右文
FOUNDATION_EXPORT NSString * const KBBAToastSaveFailLittle; // 小号保存失败,适用左图右文

FOUNDATION_EXPORT NSString * const KBBAToastNightModeOff; // 大号夜间模式关闭,适用上图下文
FOUNDATION_EXPORT NSString * const KBBAToastNightModeOn; // 大号夜间模式开启,适用上图下文

typedef NS_ENUM(NSUInteger, BBAToastActionType) {
    BBAToastActionType_Normal, // 正常默认类型
    BBAToastActionType_Button, // button强调类型
};

/// Toast展示位置
typedef NS_ENUM(NSUInteger, BBAToastShowPosition) {
    BBAToastShowPositionCenter, // 居中展示
    BBAToastShowPositionBottom, // 底部展示
};

typedef NS_ENUM(NSUInteger, BBAToastShowDurtion) {
    BBAToastShowDurtion_Short   = 3,
    BBAToastShowDurtion_Medium  = 5,
    BBAToastShowDurtion_Long    = 7,
    BBAToastShowDurtion_Longer  = 10
};

typedef void (^BBAToastCallbackBlock)(void);

@interface BBAToastInfo : NSObject

@property (nonatomic, strong) UIImage *leftImage; // 图片
@property (nonatomic, strong) UIView *leftCustomView; // 左部自定义视图(和图片互斥)

@property (nonatomic, copy) NSString *title; // 主标题
@property (nonatomic, strong) NSAttributedString *titleAttribute; // 主标题富文本设置

@property (nonatomic, copy) NSString *subTitle; // 副标题

@property (nonatomic, copy) NSString *jumpText; // 跳转区标题
@property (nonatomic, strong) UIColor *jumpTextColor; // 跳转区文案颜色,BBAToastActionType_Normal类型生效

@property (nonatomic, assign) BBAToastActionType actionType; // 跳转类型
@property (nonatomic, copy, nullable) void(^closeAction)(void); // 关闭按钮,可以为空,赋值该属性时右侧会出现关闭按钮

@property (nonatomic, assign) BBAToastShowPosition toastPosition; // toast展示在屏幕位置,只针对单文字 或者 左图右文类型,默认居中

@property (nonatomic, strong) UIView *parentView; // 指定展示toast父View,否则内部默认

@end

@interface BBAToastView : UIControl

/// 文本提示
/// @param message 内容,会限定单行最大宽度,支持最多两行,默认展示3s
+ (void)showToast:(NSString *)message;


/// 文本提示,可设置位置(居中/屏幕底部),展示时长
/// @param message 文本内容
/// @param position 位置
/// @param duration 展示时长
+ (void)showToast:(NSString *)message
         position:(BBAToastShowPosition)position
         duration:(BBAToastShowDurtion)duration;


/// 垂直排列提示 图片+文案
/// @param image   图片
/// @param message 文案内容
+ (void)showToastInVertical:(UIImage *)image
                    message:(NSString *)message;


/// 垂直排列提示 图片+文案
/// @param image 图片
/// @param message 文案内容
/// @param hostView 父view, 如果不指定则内部默认
/// @param duration 展示时长
+ (void)showToastInVertical:(UIImage *)image
                    message:(NSString *)message
                   hostView:(nullable UIView *)hostView
                   duration:(BBAToastShowDurtion)duration;


/// 垂直排列提示 自定视图+文案,屏幕居中展示
/// @param customView 自定义视图(内部固定大小)
/// @param message 文案
/// @param hostView 父view, 如果不指定则内部默认
/// @param duration 展示时长
+ (void)showToastCustomInVertical:(UIView *)customView
                          message:(NSString *)message
                         hostView:(nullable UIView *)hostView
                         duration:(BBAToastShowDurtion)duration;


/// 水平方向 图片+文字
/// @param message 文案
/// @param image 图片名
+ (void)showToast:(NSString *)message
            image:(UIImage *)image;


/// 水平方向 图片+文字
/// @param message 文案
/// @param image 图片
/// @param position 屏幕中展示位置
/// @param duration 展示时长
+ (void)showToast:(NSString *)message
            image:(UIImage *)image
         position:(BBAToastShowPosition)position
         duration:(BBAToastShowDurtion)duration;


/// 支持复杂配置展示
/// @param info 配置内容
/// @param duration 展示时长
/// @param callback 点击回调
+ (void)showToastInfo:(BBAToastInfo *)info
             duration:(BBAToastShowDurtion)duration
             callback:(nullable BBAToastCallbackBlock)callback;


/// 在指定 darkmode模式 和 延时时间 下展示toast任务
/// @param mode darkmode标识,设置为nil则无效,内部按照当前mode适配
/// @param duration 此duration使用优先级最高,
/// 最小设置为1s,否则认为该duration无效,走task内接口duration
/// @param taskBlock toast任务block
+ (void)runInMode:(nullable NSString *)mode
         duration:(CGFloat)duration
         withTask:(dispatch_block_t)taskBlock;


/// 当前是否有展示中的toast
+ (BOOL)isToastOnShowing;


/// 隐藏Toast
+ (void)hiddenToast;

@end

NS_ASSUME_NONNULL_END