首页 > 解决方案 > 如何确保具有重复动画的 UITableView 标题单元格子视图在重新加载数据、用户滚动等之后继续动画?

问题描述

我有一个带有标题单元格的 ViewController 运行良好,除了标题单元格中的一个视图有一个重复动画,当在视图控制器中设置特定条件时,它应该继续无休止地制作动画。我有时可以在 viewDidLoad 中成功启动动画,并在我的处理程序中重新启动它以获取 .appDidBecomeActive 通知。但是,当用户滚动或拉动以刷新 tableview 数据时,动画会停止。我确实覆盖了 scrollViewDidEndDragging 和 scrollViewDidEndDecelerating 方法来重新启动它,但它实际上并没有可靠地重新启动动画。线索?

        UIView.animate(withDuration: 2.0,
                       delay: 0.0,
                       options: [.curveEaseInOut, .autoreverse, .repeat, .beginFromCurrentState],
                       animations: { self.headerCellAnimatedSubview?.alpha = 1.0 },
                       completion: { _ in  self.headerCellAnimatedSubview?.alpha = 0.0 }
        )

标签: iosswiftuiviewanimation

解决方案


经过一些帮助后,我发现将动画调用添加到 UITableViewHeaderCell 类的 didMoveToWindow 覆盖后,动画将在滚动后重新启动。但是,正如预期的那样,当应用程序从后台返回时,我还必须响应 appDidBecomeActive 通知以重新启动动画。


推荐阅读