Files
real-e-party-iOS/YuMi/E-P/Common/EPProgressHUD.swift.backup
2025-10-17 14:52:29 +08:00

93 lines
2.9 KiB
Plaintext
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.

//
// EPProgressHUD.swift
// YuMi
//
// Created by AI on 2025-10-11.
//
import UIKit
import Foundation
/// 带进度的 Loading 组件(基于 MBProgressHUD
@objc class EPProgressHUD: NSObject {
private static var currentHUD: MBProgressHUD?
/// 获取当前活跃的 window兼容 iOS 13+
private static var keyWindow: UIWindow? {
if #available(iOS 13.0, *) {
return UIApplication.shared.connectedScenes
.compactMap { $0 as? UIWindowScene }
.flatMap { $0.windows }
.first { $0.isKeyWindow }
} else {
return UIApplication.shared.keyWindow
}
}
/// 显示上传进度
/// - Parameters:
/// - uploaded: 已上传数量
/// - total: 总数量
@objc static func showProgress(_ uploaded: Int, total: Int) {
DispatchQueue.main.async {
guard let window = keyWindow else { return }
if let hud = currentHUD {
// 更新现有 HUD
hud.label.text = String(format: YMLocalizedString("upload.progress_format"), uploaded, total)
hud.progress = Float(uploaded) / Float(total)
} else {
// 创建新 HUD
let hud = MBProgressHUD.showAdded(to: window, animated: true)
hud.mode = .determinateHorizontalBar
hud.label.text = String(format: YMLocalizedString("upload.progress_format"), uploaded, total)
hud.progress = Float(uploaded) / Float(total)
hud.removeFromSuperViewOnHide = true
currentHUD = hud
}
}
}
/// 显示错误提示
/// - Parameter message: 错误信息
@objc static func showError(_ message: String) {
DispatchQueue.main.async {
guard let window = keyWindow else { return }
let hud = MBProgressHUD.showAdded(to: window, animated: true)
hud.mode = .text
hud.label.text = message
hud.label.numberOfLines = 0
hud.removeFromSuperViewOnHide = true
hud.hide(animated: true, afterDelay: 2.0)
}
}
/// 显示成功提示
/// - Parameter message: 成功信息
@objc static func showSuccess(_ message: String) {
DispatchQueue.main.async {
guard let window = keyWindow else { return }
let hud = MBProgressHUD.showAdded(to: window, animated: true)
hud.mode = .text
hud.label.text = message
hud.label.numberOfLines = 0
hud.removeFromSuperViewOnHide = true
hud.hide(animated: true, afterDelay: 2.0)
}
}
/// 关闭 HUD
@objc static func dismiss() {
DispatchQueue.main.async {
guard let hud = currentHUD else { return }
hud.hide(animated: true)
currentHUD = nil
}
}
}