如何重启 UIRefreshControl 动画?

Posted

技术标签:

【中文标题】如何重启 UIRefreshControl 动画?【英文标题】:How to restart UIRefreshControl animation? 【发布时间】:2014-03-13 17:52:50 【问题描述】:

我在标签栏控制器中有几个表格视图。在其中一些上,我设置了 UIRefreshControl。

向下滑动开始刷新后,“微调器”动画开始。如果我选择了不同的选项卡,然后移回原来的选项卡,刷新控件仍然显示,但动画已停止。

如何重新开始这个动画?

我已尝试再次开始刷新,但没有结果。 我还检查了视图层次结构,希望找到一个 UIActivityIndi​​catorView 但只能找到一个 _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

ECSlidingViewController 冻结 UIRefreshControl

UIRefreshControl:表格视图奇怪地跳跃

以编程方式调用 UIRefreshControl 不起作用