Hud: MBProgressHUD or SVProgressHUD
我的代码是这样的:Hud1 shows message: "loading"
network or other async code, success {
Hud1 hide
}, failure {
Hud1 hide
Hud99 show"error message", hideAfter:2 seconds
}
Hud2 shows message: "loading"
network or other async code, success {
Hud2 hide
}, failure {
Hud1 hide
Hud99 show"error message", hideAfter:2 seconds
}
..........
有时,我必须同时请求两个后端数据。
在这种情况下,我面临的问题是hud重叠,hud的颜色变暗。更多的hud,更暗。
是否有办法只显示一个hud?我想找到解决这个问题的最佳方法。
方法1
extension UIView {
func showHUD(title: String) {
DispatchQueue.main.async {
let hud = MBProgressHUD.showAdded(to: self, animated: true)
hud.label.text = title
}
}
func hideHUD() {
DispatchQueue.main.async {
MBProgressHUD.hide(for: self, animated: false)
}
}
}
要么使用上述方法,要么为Loader创建一个类,其中可以保留count
,这将避免您再次添加HUD:
class Loader {
private static var count = 0
class func showHUD() {
if count == 0 {
print("Add HUD")
count += 1
}
}
class func hideHUD() {
if count > 0 {
print("Hide HUD")
count -= 1
}
}
}