弱提示组件

AUToast 为 mPaaS 自定义 Toast 控件 。AUToast 迁移自 APCommonUI 的 APToast,请使用 AUToast。

该组件主要包含两类 Toast:

  • 普通 Toast

  • 模态 Toast

模态 Toast 比普通 Toast 多了透明背景层,用户在背景层覆盖区域不可点击。

效果图

接口说明

// log 输出函数声明,由外部设置
typedef void(*AUToastLogFunc)(NSString *tag, NSString *format, ...);
extern AUToastLogFunc g_ToastExternLogFunc; // log 输出函数全局变量,由外部设置
#define AUToastLog(fmt, ...) {if(g_ToastExternLogFunc)g_ToastExternLogFunc(@"@AUToast",fmt,##__VA_ARGS__);}


#define AUToast_Default_Duration 2.0    // AUToast 默认展示时间
#define AUToast_Strong_Duration 1.5     // AUToast 强提示展示时长
#define AUToast_Weak_Duration 1.0       // AUToast 弱提示展示时长

/**
 *  添加新的 toastIcon 时,请向后添加,不要在中间插入,否则业务使用会有问题
 */
typedef enum{
        AUToastIconNone = 0,    // 无图标
        AUToastIconSuccess,     // 成功图标
        AUToastIconFailure,     // 失败图标
        AUToastIconLoading,     // 加载图标
        AUToastIconNetFailure,  // 网络失败
        AUToastIconSecurityScan,// 安全扫描
        AUToastIconNetError,    // 网络错误,完全无法连接
        AUToastIconProgress,    // 加载图标,显示加载进度
        AUToastIconAlert,       // 警示图标
} AUToastIcon;

/**
 * Toast 控件
 */
@interface AUToast : UIView

@property (nonatomic, assign) CGFloat xOffset; // 设置相对父视图中心位置 X 轴方向的偏移量
@property (nonatomic, assign) CGFloat yOffset; // 设置相对父视图中心位置 Y 轴方向的偏移量

/*
 * 模态显示提示,此时屏幕不响应用户操作(显示在 keywindow 上面),
 * 需调用 dismissToast 方法使 Toast 消失
 *
 * @param text   显示文本,默认为 loading 加载
 * @param logTag 日志标识
 *
 * @return 返回显示的 Toast 对象
 */
+ (AUToast *)presentToastWithText:(NSString *)text
                                                    logTag:(NSString*)logTag;

/**
 * 显示 Toast,需调用 dismissToast 方法使 Toast 消失
 *
 * @param superview 父视图
 * @param text      显示文本
 * @param logTag    日志标识
 *
 * @return 返回显示的 Toast 对象
 */
+ (AUToast *)presentToastWithin:(UIView *)superview
                                                    text:(NSString *)text
                                                logTag:(NSString*)logTag;

/**
 * 显示 Toast,需调用 dismissToast 方法使 Toast 消失
 *
 * @param superview 父视图
 * @param icon      图标类型
 * @param text      显示文本
 * @param logTag    日志标识
 *
 * @return 返回显示的 Toast 对象
 */
+ (AUToast *)presentToastWithin:(UIView *)superview
                                            withIcon:(AUToastIcon)icon
                                                    text:(NSString *)text
                                                logTag:(NSString*)logTag;

/**
 * 显示 Toast
 *
 * @param superview 父视图
 * @param icon      图标类型
 * @param text      显示文本
 * @param duration  显示时长
 * @param logTag    日志标识
 *
 * @return 返回显示的 Toast 对象
 */
+ (AUToast *)presentToastWithin:(UIView *)superview
                                            withIcon:(AUToastIcon)icon
                                                    text:(NSString *)text
                                            duration:(NSTimeInterval)duration
                                                logTag:(NSString*)logTag;



/**
 * 显示 Toast
 *
 * @param superview     要在其中显示 Toast 的视图
 * @param icon          图标类型
 * @param text          显示文本
 * @param duration      显示时长
 * @param logTag        日志标识
 * @param completion    Toast 自动消失后的回调
 *
 * @return 返回显示的 Toast 对象
 */
+ (AUToast *)presentToastWithin:(UIView *)superview
                                            withIcon:(AUToastIcon)icon
                                                    text:(NSString *)text
                                            duration:(NSTimeInterval)duration
                                                logTag:(NSString*)logTag
                                        completion:(void (^)())completion;


/**
 * 显示 Toast
 *
 * @param superview     要在其中显示 Toast 的视图
 * @param icon          图标类型
 * @param text          显示文本
 * @param duration      显示时长
 * @param delay         延迟显示时长
 * @param logTag        日志标识
 * @param completion    Toast 自动消失后的回调
 *
 * @return 返回显示的 Toast 对象
 */
+ (AUToast *)presentToastWithin:(UIView *)superview
                                            withIcon:(AUToastIcon)icon
                                                    text:(NSString *)text
                                            duration:(NSTimeInterval)duration
                                                    delay:(NSTimeInterval)delay
                                                logTag:(NSString*)logTag
                                        completion:(void (^)())completion;



/*
 * 模态 toast,需调用 dismissToast 方法使 Toast 消失
 * 跟普通的 toast 区别是,会添加一个透明的背景层,防止用户屏幕点击
 *
 * @param superview 父视图
 * @param text      显示文本
 * @param logTag    日志标识
 *
 * @return 返回显示的 Toast 对象
 */
+ (AUToast *)presentModelToastWithin:(UIView *)superview
                                                                text:(NSString *)text
                                                            logTag:(NSString*)logTag;


/**
 * 显示模态 Toast
 * 跟普通的 toast 区别是,会添加一个透明的背景层,防止用户屏幕点击
 *
 * @param superview     要在其中显示 Toast 的视图
 * @param icon          图标类型
 * @param text          显示文本
 * @param duration      显示时长
 * @param logTag        日志标识
 * @param completion    Toast 自动消失后的回调
 *
 * @return 返回显示的 Toast 对象
 */
+ (AUToast *)presentModalToastWithin:(UIView *)superview
                                                        withIcon:(AUToastIcon)icon
                                                                text:(NSString *)text
                                                        duration:(NSTimeInterval)duration
                                                            logTag:(NSString*)logTag
                                                    completion:(void (^)())completion;


/**
 * 显示模态 Toast
 * 跟普通的 toast 区别是,会添加一个透明的背景层,防止用户屏幕点击
 *
 * @param superview     要在其中显示 Toast 的视图
 * @param icon          图标类型
 * @param text          显示文本
 * @param duration      显示时长
 * @param delay         延迟显示时长
 * @param logTag        日志标识
 * @param completion    Toast 自动消失后的回调
 *
 * @return 返回显示的 Toast 对象
 */
+ (AUToast *)presentModalToastWithin:(UIView *)superview
                                                        withIcon:(AUToastIcon)icon
                                                                text:(NSString *)text
                                                        duration:(NSTimeInterval)duration
                                                            delay:(NSTimeInterval)delay
                                                            logTag:(NSString*)logTag
                                                    completion:(void (^)())completion;


/*
 * 使 toast 消失
 */
- (void)dismissToast;

/**
 *  设置进度的前缀文本,如果不设置,默认为“加载数据”
 *  当 toast 类型为 AUToastIconProgress 时设置有效,否则忽略
 *
 *  @param prefix 文本
 */
- (void)setProgressPrefix:(NSString*)prefix;

/**
 * 显示当前加载数据的进度百分比
 * 当 toast 类型为 AUToastIconProgress 时设置有效,否则忽略
 *
 * @param value      当前已加载的数据,范围为 <0.0,1.0>
 *
 */
- (void)setProgressText:(float)value;

@end

代码示例

[AUToast presentToastWithin:self.view withIcon:AUToastIconNetFailure text:@"系统繁忙" logTag:@"demo"];
[AUToast presentToastWithin:self.view withIcon:AUToastIconSuccess text:@"成功提示" logTag:@"demo"];
[AUToast presentToastWithin:self.view withIcon:AUToastIconFailure text:@"失败提示" logTag:@"demo"];
[AUToast presentToastWithin:self.view withIcon:AUToastIconAlert text:@"警示提示" logTag:@"demo"];

// 加载中
[AUToast presentToastWithin:self.view withIcon:AUToastIconLoading text:nil logTag:@"demo"];

// 显示进度场景
AUToast *toast = [AUToast presentToastWithin:self.view withIcon:AUToastIconProgress text:@"加载中" logTag:@"demo"];
toast.origin = point;
[toast setProgressPrefix:@"~~~"];
[toast setProgressText:0.5];

// 模态 Toast
[AUToast presentModalToastWithin:weakSelf.view withIcon:AUToastIconLoading text:@"模态toast,最长文案有这么多,算不算多啊(三秒后消失)" duration:3 logTag:@"demo" completion:NULL];
[AUToast presentModalToastWithin:weakSelf.view withIcon:AUToastIconLoading text:@"模态toast,最长文案有这么多,算不算多啊(三秒后消失)" duration:3 delay:2  logTag:@"demo" completion:NULL];