我正在我的应用程序中创建一个"事件倒计时"场景,该场景使用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];