// // 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 = "上传中 \(uploaded)/\(total)" hud.progress = Float(uploaded) / Float(total) } else { // 创建新 HUD let hud = MBProgressHUD.showAdded(to: window, animated: true) hud.mode = .determinateHorizontalBar hud.label.text = "上传中 \(uploaded)/\(total)" hud.progress = Float(uploaded) / Float(total) hud.removeFromSuperViewOnHide = true currentHUD = hud } } } /// 关闭 HUD @objc static func dismiss() { DispatchQueue.main.async { guard let hud = currentHUD else { return } hud.hide(animated: true) currentHUD = nil } } }