一、现象描述
在一个viewController中使用了[ProgressHUD show**],首次打开app使用一切正常,但是我退出app之后重新打开,然后到了那个页面,它就不显示了,功能一切正常,也显示经过了这行代码。
原因是因为我在applicationWillEnterForeground中调用了didFinishLaunchingWithOptions,意味着每次退出app再重新打开的时候,相当于执行了didFinishLaunchingWithOptions里面的初始化的代码。我觉得应该是就是这里出了问题,我去掉了在applicationWillEnterForeground中对didFinishLaunchingWithOptions的调用,果然一切都好了。
二、解决方案
但是我没有像上面那样解决,因为像上面那样的话,我还要去修改其他部分的逻辑方面的代码,改动有点大,然后我就想,会不会是ProgressHUD特有的问题,所以我就试试其他HUD,比如非常流行的SVProgressHUD,然后,一切都好了……好了……了。
所以,解决方案就是,我全部替换成了SVProgressHUD,GITHUB上有。我看了两者的源码,技术太浅以及时间太紧,没看出来什么问题,有时间再仔细研究。
注:SVProgressHUD源码里面对于展示进度条的逻辑是这样的:
根据SVProgressHUD的层级结构可以看出,从底层到顶层依次是:UIControl (overlayView) -> SVProgressHUD -> UIView (hudView) -> UIVisualEffectView -> AnimatedView (具体动画视图) 。
主要区别应该就在上面这个层级上面。
本文描述了一个关于在iOS应用中使用ProgressHUD的问题,当从后台返回时,特定的ProgressHUD不再显示。作者通过尝试SVProgressHUD成功解决了该问题,并分析了两者可能存在的差异。
5830

被折叠的 条评论
为什么被折叠?



