75 lines
2.3 KiB
Swift
75 lines
2.3 KiB
Swift
//
|
||
// Hud.swift
|
||
// Crush
|
||
//
|
||
// Created by Leon on 2025/7/13.
|
||
//
|
||
|
||
import Foundation
|
||
import UIKit
|
||
|
||
/// ⚠️只在不确认View主体时使用(eg: IAPCore),其他情况请使用Hud.showIndicator() and view.hideToastActivity
|
||
class Hud {
|
||
static let shared = Hud()
|
||
|
||
static func showIndicator(_ blockUserTap: Bool? = true) {
|
||
DispatchQueue.main.async {
|
||
if let view = UIWindow.key {
|
||
view.makeToastActivity(.center, blockUserInteraction: blockUserTap ?? true)
|
||
} else if let view = UIWindow.getTopViewController()?.view {
|
||
view.makeToastActivity(.center, blockUserInteraction: blockUserTap ?? true)
|
||
}
|
||
}
|
||
}
|
||
|
||
/// 显示加载指示器,可选择是否阻止用户交互
|
||
/// - Parameter blockUserInteraction: 是否阻止用户与页面上其他元素的交互,默认为false
|
||
// static func showIndicator(blockUserInteraction: Bool = true) {
|
||
// DispatchQueue.main.async {
|
||
// if let view = UIWindow.key {
|
||
// view.makeToastActivity(.center, blockUserInteraction: blockUserInteraction)
|
||
// } else if let view = UIWindow.getTopViewController()?.view {
|
||
// view.makeToastActivity(.center, blockUserInteraction: blockUserInteraction)
|
||
// }
|
||
// }
|
||
// }
|
||
|
||
static func hideIndicator() {
|
||
DispatchQueue.main.async {
|
||
if let view = UIWindow.key {
|
||
view.hideToastActivity()
|
||
} else if let view = UIWindow.getTopViewController()?.view {
|
||
view.hideToastActivity()
|
||
}
|
||
}
|
||
}
|
||
|
||
static func toast(str: String?, completion: ((Bool)-> Void)? = nil) {
|
||
DispatchQueue.main.async {
|
||
guard let toast = str, let view = UIWindow.applicationKey else {
|
||
return
|
||
}
|
||
view.makeToast(toast, completion: completion)
|
||
}
|
||
}
|
||
|
||
static func hideToast(){
|
||
DispatchQueue.main.async {
|
||
guard let view = UIWindow.applicationKey else {
|
||
return
|
||
}
|
||
view.hideToast()
|
||
}
|
||
}
|
||
|
||
static func comingsoon(){
|
||
Hud.toast(str: "Comming soon...")
|
||
}
|
||
|
||
required init() {
|
||
//ToastManager.shared.duration = 1.0
|
||
|
||
ToastManager.shared.isQueueEnabled
|
||
}
|
||
}
|