如何解决重叠问题?



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
}
}
}

最新更新