iOS 15系统下ARSLineProgress组件无法隐藏问题求助
问题根因
- 你使用的ARSLineProgress仓库已停止维护超过7年,未适配iOS15及以上系统。iOS15对UIKit隐式动画规则、主队列UI任务调度优先级做了调整,原有库的
ars_hideLoader方法内部逻辑不再适配新系统。 ars_hideLoader方法没有强制将UI操作派发至主队列执行,iOS15之后非主队列的UI操作大概率会被系统丢弃,导致隐藏动画不触发、进度条残留。- 部分场景下iOS15的视图层级变动会导致全局变量
ars_currentLoader取值为空,隐藏方法实际未执行对应的视图移除逻辑。
解决方案
方案1:无侵入临时修复(无需修改库源码)
调用隐藏方法时,强制将代码派发至主队列执行即可:
DispatchQueue.main.async { ARSLineProgress.hide() }
方案2:修改库源码彻底修复
找到ars_hideLoader的实现文件,将方法内部的所有逻辑包裹在主队列调度代码中:
public static func hide() { dispatch_async(dispatch_get_main_queue(), ^{ ars_hideLoader(ars_currentLoader, withCompletionBlock: nil) }); }
方案3:长期适配建议
如果后续需要持续兼容新的iOS系统版本,建议替换为仍在维护的轻量级进度条控件,避免后续系统升级再次出现兼容性问题。
内容的提问来源于stack exchange,提问作者Mujtaba
相关产品推荐
相关产品推荐

