
主要变更: 1. 在 Info.plist 中将应用名称和描述中的 "E-Parti" 替换为 "E-Party"。 2. 更新多个本地化字符串和提示信息,确保一致性。 3. 修改部分代码中的错误提示信息,使用本地化字符串替代硬编码文本。 此更新旨在提升品牌一致性,确保用户在使用过程中获得统一的体验。
93 lines
2.9 KiB
Swift
93 lines
2.9 KiB
Swift
//
|
||
// 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
|
||
}
|
||
}
|
||
}
|
||
|