MBProgressHUD 不显示
MBProgressHUD not show
当我这样写时,它按预期工作:
override func viewDidLoad() {
super.viewDidLoad()
MBProgressHUD.showAdded(to: navigationController!.view, animated: true)
}
但是,当我把它放在 DispatchQueue.main 块中时,HUD 不显示:
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.async {
MBProgressHUD.showAdded(to: self.navigationController!.view, animated: true)
}
}
我调试了视图层次结构,但存在布局问题:
"Position and size are ambiguous for MBProgressHUD"
navigationController 是 fatherViewController 的 childViewController,容器视图由 fatherViewController 的视图中的自动布局设置。
这是导致问题的原因吗?
我专门为你做了测试,下面的代码对我有用:
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.async {
MBProgressHUD.showAdded(to: self.navigationController!.view, animated: true)
}
}
所以问题出在其他地方
实际上 MBProgressHUD 在 UI 主线程上工作,而您正试图在后台线程中调用它。
试试这个:-
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.async { start()
}
}
func start(){
MBProgressHUD.showAdded(to: self.navigationController!.view, animated: true)}
我已经构建了一个演示来测试它,但它没有发生。所以我重新检查了我的代码,发现我在 DispatchQueue.main.async
中做了一些工作,它阻止了 UI 并导致了问题。
根UI视图几何在viewDidLoad
点未计算(未调用viewDidLayoutSubviews
)。我建议将您的代码放入 viewDidAppear
。
此外,不需要在 DispatchAsync.main
中显式调用它,正如其他人提到的那样,它是在 UI 线程中调用的,除非您想从后台线程调用它。
当我这样写时,它按预期工作:
override func viewDidLoad() {
super.viewDidLoad()
MBProgressHUD.showAdded(to: navigationController!.view, animated: true)
}
但是,当我把它放在 DispatchQueue.main 块中时,HUD 不显示:
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.async {
MBProgressHUD.showAdded(to: self.navigationController!.view, animated: true)
}
}
我调试了视图层次结构,但存在布局问题:
"Position and size are ambiguous for MBProgressHUD"
navigationController 是 fatherViewController 的 childViewController,容器视图由 fatherViewController 的视图中的自动布局设置。
这是导致问题的原因吗?
我专门为你做了测试,下面的代码对我有用:
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.async {
MBProgressHUD.showAdded(to: self.navigationController!.view, animated: true)
}
}
所以问题出在其他地方
实际上 MBProgressHUD 在 UI 主线程上工作,而您正试图在后台线程中调用它。
试试这个:-
override func viewDidLoad() {
super.viewDidLoad()
DispatchQueue.main.async { start()
}
}
func start(){
MBProgressHUD.showAdded(to: self.navigationController!.view, animated: true)}
我已经构建了一个演示来测试它,但它没有发生。所以我重新检查了我的代码,发现我在 DispatchQueue.main.async
中做了一些工作,它阻止了 UI 并导致了问题。
根UI视图几何在viewDidLoad
点未计算(未调用viewDidLayoutSubviews
)。我建议将您的代码放入 viewDidAppear
。
此外,不需要在 DispatchAsync.main
中显式调用它,正如其他人提到的那样,它是在 UI 线程中调用的,除非您想从后台线程调用它。