当前位置: 首页 > 工具软件 > ProgressHUD > 使用案例 >

iOS:ProgressHUD无效不显示的现象

勾长卿
2023-12-01

一、现象描述

在一个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 (具体动画视图) 。

主要区别应该就在上面这个层级上面。

参考资料:SVProgressHUD(2.0.3)原来是这样

 类似资料: