SVProgressHUD 在显示另一条消息后不显示

SVProgressHUD doesnt show after showing another message

我正在尝试使用 SVProgressHUD 显示微调器,当我从服务器收到异步响应时,关闭该 HUD 并显示另一个 HUD,其中包含从服务器收到的消息。

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    SVProgressHUD.setDefaultStyle(.Custom)
    SVProgressHUD.setForegroundColor(UIColor.whiteColor())
    SVProgressHUD.setBackgroundColor(UIColor.clearColor())
    SVProgressHUD.setDefaultMaskType(SVProgressHUDMaskType.Clear)
    SVProgressHUD.show()
    loadData()

}

private func loadData() {
    ApiService.getData { (succeed, message) -> () in
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            self.dismissHud()
        })
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            SVProgressHUD.showInfoWithStatus("I can't see this")
        })
}

如果我删除 viewDidAppear 中显示 HUD 的代码,我可以看到该消息。 有任何想法吗?感谢

有两点不对,第一,为什么分派到同一个线程两次?其次,如果您只想显示 HUD,请不要忽略它。

SVProgressHUD.showInfoWithStatus 会在一段时间后隐藏该消息。
您没有看到第二个 HUD 的原因是它仍然删除了第一个。由于您只想更新,因此请不要调用关闭。

我已将 FadeInAnimationDurationFadeoutAnimationDuration 更改为 0.0,对我来说效果很好。 我是这样使用 HUD 的:

显示 HUD :

func showActivityLoader() {

            dispatch_async(dispatch_get_main_queue(), {

            SVProgressHUD.setFadeInAnimationDuration(0.0)
            SVProgressHUD.setFadeOutAnimationDuration(0.0)
            SVProgressHUD.setDefaultMaskType(SVProgressHUDMaskType.Clear)
            SVProgressHUD.show()

            })
    }

隐藏 HUD :

func dismissActivityLoader() {

            dispatch_async(dispatch_get_main_queue(), { 

                SVProgressHUD.dismiss()
            })
    }