UITableView 滚动时卡顿和跳跃

Posted

技术标签:

【中文标题】UITableView 滚动时卡顿和跳跃【英文标题】:UITableView is laggy and jumps when scrolling 【发布时间】:2015-09-29 14:56:07 【问题描述】:

我正在使用带有动态单元格的 UITableView。每个单元格都有一些按钮、一个图像和一个标签。图片的宽度等于tableview的宽度,高度是可变的。

我正在通过函数更新 cellForRowAtIndexPath 中图像的高度...以尊重纵横比。标签可以有 1 行或多行。

我正在使用 heightForRowAtIndexPath 来设置单元格的高度。我正在那里计算并返回值。

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 

    let queficient = CGFloat(dataController.Data[indexPath.row].width) / self.view.frame.size.width

    let imgHeight = CGFloat(dataController.Data[indexPath.row].height) / queficient

    return 134 + imgHeight + heightForView(dataController.Data[indexPath.row].description)

我不知道为什么滚动时表格有点卡顿和跳跃。

【问题讨论】:

【参考方案1】:

如果您确定延迟是由 heightforRowAtIndexPath 引起的,为什么不在图像更改时只计算每个单元格数据/索引路径的高度?

你应该只返回 dataController.Data[indexPath.row].calculatedCellHeight 之类的东西

【讨论】:

以上是关于UITableView 滚动时卡顿和跳跃的主要内容,如果未能解决你的问题,请参考以下文章

iOS UITableView在过滤时滚动插入

swift:从本地 json 文件填充的 uitableview 在滚动时严重卡顿

UITableView 滚动刷新使单元格跳跃

具有动态单元格高度的 UITableView 的 reloadData() 导致跳跃滚动

编辑第一个 UITextField 时,如何将 UITableView 滚动到第二个 UITextField?

UITableView 在旋转时使用自动布局调整大小