3

我在 tableview 单元格中有一个进度指示器,当用户与 tableview 交互时,它不会更新其进度。当交互停止时,指示器会跳转到它应该在的位置。

如何避免这种情况,以便即使用户正在滚动表格视图,动画也会继续?

可以将它们添加到运行循环中吗?如果交互和动画都需要在主线程上发生,可以做些什么变通?

4

1 回答 1

3

首先,您应该确保您确实希望更新这些进度指示器 -UIScrollView滚动时类型类的默认行为是暂停其中的任何 UI 更新以保持响应。我发现每当我尝试做任何额外的事情时,滚动速度之类的东西会以惊人的速度下降,尤其是在旧设备上。

除了警告,我们如何做到这一点?好吧,看起来这个问题对你有一个解决方案。一个简短的总结是:

  • 滚动将运行循环置于UITrackingRunLoopMode
  • 当 runloop 处于此模式时,您的更新代码不会触发
  • 解决方案:NSTimer触发您的进度指示器更新,运行该计时器,NSRunLoopCommonModes使其在滚动时仍会触发。

而已。UIView滚动时更新不是问题,运行触发更新的代码是。通过使用“防滚动”的计时器,您的指标应该会更新得很好。链接问题中有一些很好的示例代码,所以请点击阅读

于 2012-12-08T19:02:30.090 回答