Files
keyboard/keyBoard/Class/Categories/KBHUD.h
2025-10-31 15:08:30 +08:00

73 lines
2.8 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// KBHUD.h
// keyBoard
//
// 基于 MBProgressHUD 的轻量封装,提供类似 SVProgressHUD 的类方法调用方式。
// 特性:
// - 默认加到 KeyWindow 上
// - 支持遮罩模式(不拦截/透明拦截/半透明黑遮罩)
// - 默认不支持点击背景关闭;可为“本次显示/当前 HUD”开启点击关闭
// - 文案/加载/进度/自动消失
//
#import <Foundation/Foundation.h>
@class UIView; // forward declare to avoid importing UIKit in header
typedef NS_ENUM(NSUInteger, KBHUDMaskType) {
/// 不加遮罩,事件可透传到后面的视图(与 SVProgressHUDMaskTypeNone 类似)
KBHUDMaskTypeNone = 0,
/// 透明遮罩,拦截触摸但不变暗(与 SVProgressHUDMaskTypeClear 类似)
KBHUDMaskTypeClear,
/// 半透明黑色遮罩(与 SVProgressHUDMaskTypeBlack 类似)
KBHUDMaskTypeBlack,
};
NS_ASSUME_NONNULL_BEGIN
@interface KBHUD : NSObject
#pragma mark - 显示
/// 纯菊花
+ (void)show;
/// 菊花 + 文案
+ (void)showWithStatus:(nullable NSString *)status;
/// 菊花 + 文案(可配置:是否允许点击背景关闭)
+ (void)showWithStatus:(nullable NSString *)status allowTapToDismiss:(BOOL)allow;
/// 圆形进度 0~1 + 文案
+ (void)showProgress:(float)progress status:(nullable NSString *)status;
/// 圆形进度 0~1 + 文案(可配置:是否允许点击背景关闭)
+ (void)showProgress:(float)progress status:(nullable NSString *)status allowTapToDismiss:(BOOL)allow;
/// 文案提示(自动隐藏)
+ (void)showInfo:(NSString *)status;
/// 成功提示(自动隐藏)
+ (void)showSuccess:(NSString *)status;
/// 失败提示(自动隐藏)
+ (void)showError:(NSString *)status;
#pragma mark - 隐藏
/// 立即隐藏
+ (void)dismiss;
/// 延时隐藏
+ (void)dismissWithDelay:(NSTimeInterval)delay;
#pragma mark - 配置(全局)
/// 设置默认遮罩类型,默认 KBHUDMaskTypeClear
+ (void)setDefaultMaskType:(KBHUDMaskType)maskType;
/// 为“当前正在展示的 HUD”设置点击背景是否关闭若当前没有 HUD 则忽略
+ (void)setTapToDismissEnabled:(BOOL)enabled;
/// 仅本次显示:菊花(无文案)可配置是否允许点击背景关闭
+ (void)showAllowTapToDismiss:(BOOL)allow;
/// 设置自动隐藏的时长success/error/info默认 1.2s
+ (void)setAutoDismissInterval:(NSTimeInterval)interval;
/// 设置缺省承载视图App Extension 环境下必须设置,例如在键盘扩展里传入 self.view
/// 注意:内部弱引用,不会形成循环引用。
/// 若不设置,在非 Extension 的 App 内默认加到 KeyWindow在 Extension 内将不会显示。
/// 可在 viewDidLoad 或 viewDidAppear 调用一次即可。
/// @param view 作为 HUD 的承载父视图
+ (void)setContainerView:(nullable UIView *)view;
@end
NS_ASSUME_NONNULL_END