objective-c - TableView 交互阻止单元格中的动画

标签 objective-c ios uitableview

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

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

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

最佳答案

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

撇开警告不谈,我们如何做到这一点?好吧,它看起来像this question has a solution for you .一个简短的总结是:

  • 滚动将运行循环放在 UITrackingRunLoopMode
  • 当运行循环处于这种模式时,您的更新代码不会触发
  • 解决方案:让 NSTimer 触发进度指示器更新,在 NSRunLoopCommonModes 中运行该计时器,这样它在滚动时仍会触发。

就是这样。 UIView 滚动时更新不是问题,运行触发更新的代码才是问题。通过使用“防滚动”的计时器,您的指标应该可以正常更新。 linked question, so do click through to read 中有一些很好的示例代码!

关于objective-c - TableView 交互阻止单元格中的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13780541/

相关文章:

ios - 使用 "Aggregate target"和 "Cocoa Touch Framework"的框架。有什么区别?

ios - 点击单元格时在 UITableViewCell 上打勾

ios - UITableView 数据源和委托(delegate)的问题

ios - 缓存在 UIWebView 中不起作用

objective-c - Objective-C 的 future ?

ios - 为什么 UITableView 在模拟器上有所不同?

ios - Swift UI 和 Alamofire 图片上传

ios - 如何在 iOS 应用程序中将录制的语音设置为通知声音?

ios - 粘贴文本会产生额外的空间

ios - 从服务器获取数据后,直到单击屏幕后, TableView 才会显示数据