当UITableView滚动时,UITableViewCell动画停止

我正在我的应用程序中创建一个“事件倒计时”场景,该场景使用UITableViewController来显示将来发生的事件列表。 在每个单元格中,我有一个倒数计时器,它会计算事件发生前的时间。

在此处输入图像描述

我想为这些倒计时字段设置动画,以便实时记下这些字段。 我已经实现了这个动画,但问题是当用户滚动uitableview时动画暂停,直到用户释放滚动。 我希望动画即使在滚动时也能继续。

我动画的方式是每隔0.25秒在NSTimer上调用[self.tableview reloadData](我知道这不是最有效的方法 – 这更多地是测试动画本身)。 我还尝试在UITableViewCell本身内运行NSTimer调用视图更新 – 但滚动时仍然会暂停动画。

任何人都知道调用动画的设置或替代方式,以便在滚动时保持运行状态?

更多关于UIScrollViews的同一问题的搜索让我看到了这篇文章我的自定义UI元素……

基本上发生的事情是我正在使用的NSTimer在滚动时没有被更新,因为滚动阻止了它自己的运行循环模式之外的所有内容。 修复是将动画NSTimer添加到滚动使用的相同运行循环模式:NSRunLoopCommonModes

以下是如何在代码中执行此操作:

 NSTimer *timer = [NSTimer timerWithTimeInterval:0.25 self selector:@selector(updateCountdownLabels) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; 

我猜您正在使用视图来存储倒计时数据。 而是创建倒计时模型,可以使用开始日期(NSDate)和持续时间(NSTimeInterval)进行初始化。 然后根据计时器而不是您的视图更新那些倒计时对象。 当tableview单元格在视图中变得可见时,它将从相应的Countdown对象加载数据,并且所有内容都应该顺利运行。