如何重启 UIRefreshControl 动画?
Posted
技术标签:
【中文标题】如何重启 UIRefreshControl 动画?【英文标题】:How to restart UIRefreshControl animation? 【发布时间】:2014-03-13 17:52:50 【问题描述】:我在标签栏控制器中有几个表格视图。在其中一些上,我设置了 UIRefreshControl。
向下滑动开始刷新后,“微调器”动画开始。如果我选择了不同的选项卡,然后移回原来的选项卡,刷新控件仍然显示,但动画已停止。
如何重新开始这个动画?
我已尝试再次开始刷新,但没有结果。
我还检查了视图层次结构,希望找到一个 UIActivityIndicatorView 但只能找到一个 _UIRefreshControlModernReplicatorView
这似乎是执行动画的视图。我不知道我可以调用任何方法来重新启动动画。
【问题讨论】:
刷新控制器的一个已知问题。可在 Apple 自己的软件(例如 Mail)上轻松重现。 啊,谢谢@LeoNatan 我会留下这个,以防万一有解决方案可用 我自己也一直在尝试破解这个。如果我有什么想法,我会告诉你的。 你尝试调用[_refreshControl beginRefreshing];
函数了吗?
【参考方案1】:
我遇到了类似的问题,尽管与原始问题中描述的问题不完全相同。
问题:当我从带有刷新控件的 tableView(不是 UITableViewController)的屏幕移动到另一个屏幕时,我发现当我返回屏幕时,刷新控件的活动指示器部分正在显示(不是动画)作为表视图顶部下方的工件。
我尝试了很多想法(隐藏刷新控件,确保调用了 endRefreshing 等),直到找到真正有效的方法:
在viewWillAppear(animated:)
中,添加以下内容:
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
tableView.refreshControl = nil
tableView.refreshControl = refresher
只需添加该代码即可解决我的问题。您的里程可能会有所不同,但也许有人会发现这很有用。
【讨论】:
以上是关于如何重启 UIRefreshControl 动画?的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView UIRefreshControl 在访问不同的视图后没有动画
使用 Lottie 自定义 UIRefreshControl
如何以编程方式向下滑动UITableView以显示底层的UIRefreshControl