// // KBHUD.h // keyBoard // // 基于 MBProgressHUD 的轻量封装,提供类似 SVProgressHUD 的类方法调用方式。 // 特性: // - 默认加到 KeyWindow 上 // - 支持遮罩模式(不拦截/透明拦截/半透明黑遮罩) // - 默认不支持点击背景关闭;可为“本次显示/当前 HUD”开启点击关闭 // - 文案/加载/进度/自动消失 // #import @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