多个弹窗在一个页面弹出,避免遮挡覆盖。一个弹完,再弹下一个,直到全部弹窗显示完成。
主要思路:弹窗在需要弹出时加入弹窗池,由弹窗池根据当前是否有弹窗以及优先级进行有序弹出。
配置类:
/// 闭包
public typealias CPopupManagerComplete = () -> Swift.Void
/// 优先级枚举
enum CPopupPriority: Int {
case low = 1
case medium = 2
case high = 3
}
class CPopupConfig: NSObject {
/// 是否被拦截:默认YES
var isIntercept = true
/// 当前弹窗是否在展示
var isShowing = false
/// 弹窗优先级:默认为High
var priority: CPopupPriority = .high
/// 弹窗标识:以类名为标识
var popupClassName: String = ""
/// 展示回调
var showBlock: CPopupManagerComplete?
/// 隐藏回调
var dismissBlock: CPopupManagerComplete?
}
弹窗池管理类:
class CPopupManager: NSObject {
/// 单例
static var shared = CPopupManager()
/// 弹窗池
private var popupPool: [String: CPopupConfig]