BDPWindow.h 1.97 KB
//
//  BDPWindow.h
//  BDPWindow
//
//  Created by Liu,Xianting on 2021/1/9.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

typedef NS_ENUM(NSUInteger, BDPWindowLevelType) {
    BDPWindowLevelSplash        = 1400, //闪屏
    BDPWindowLevelToast         = 1300, //toast提醒
    BDPWindowLevelAlert         = 1200, //弹窗提醒
    BDPWindowLevelSuspension    = 1100, //悬浮窗(新特性)
    BDPWindowLevelStatusBar     = 1000, //状态栏
    BDPWindowLevelAudioPlayer   = 999,  //全局音频播放器
    BDPWindowLevelNightMask     = 1,    //夜间模式(临时定为1与现有逻辑一致)
    BDPWindowLevelNormal        = 0,
};

typedef UIWindowLevel BDPWindowLevel;
@protocol BDPWindowDelegate;

/// 手百通用浮窗 (包括全屏)
/// 可保持展示在主window最上层 (兼容PushVC和PresentVC)
/// 代替UIWindow,使用方式相同,转场相关使用BDPWindowDelegate代替
/// 对齐UIWindow, 通过hidden控制显示和隐藏
@interface BDPWindow : UIView

/// 请将新增的场景添加到 http://agroup.baidu.com/pros/md/article/3655690
/// 没有权限,可联系liuxianting@baidu.com
@property (nonatomic) BDPWindowLevel windowLevel;

/// 事件回调
@property (nonatomic, weak) id<BDPWindowDelegate> delegate;

/// 判断当前是否展示,isShow = !self.hidden && self.alpha > 0.001 && self.window;
@property (nonatomic, assign, readonly) BOOL isShow;

@end

/// BDPWindow 事件回调
@protocol BDPWindowDelegate <NSObject>

@optional;

/// 转屏时回调,用于处理横竖屏适配
/// @param window 浮窗
/// @param size 浮窗父容器大小(全屏)发生变化时的回调
- (void)window:(BDPWindow *)window containerNewSize:(CGSize)size;

/// 浮窗将要显示
- (void)windowWillAppear:(BDPWindow *)window;

/// 浮窗已经显示
- (void)windowDidAppear:(BDPWindow *)window;

/// 浮窗将要消失
- (void)windowWillDisappear:(BDPWindow *)window;

/// 浮窗已经消失
- (void)windowDidDisappear:(BDPWindow *)window;

@end

NS_ASSUME_NONNULL_END