ios - 为什么在滚动 uitableviewcontroller 时会调用 layoutIfNeeded?

原文 标签 ios performance uitableview uikit instruments

我正在尝试为速度较慢的设备优化 UITableViewController,在消除了许多导致 tableview 可能很慢的原因之后,我仍在尝试找出最后一个......

enter image description here
此屏幕截图来自仪器,显示了在没有调用获取 heightForRowAtIndexPath 期间最昂贵的调用。或 cellForRowAtIndexPath (反复上下滚动~10px,不会导致任何单元格离开表格或被渲染)。

这是正常行为吗?如果页面内容没有改变,为什么 View 需要重新布局?

最佳答案

每次滚动时,都会更改 contentOffset . contentOffset更新 bounds ,特别是它的 origin .每bounds在下一个更新周期中更改布局需要的标记接收器。在这种情况下更新 frame float subview ,如滚动指示器、表格页眉和页脚……这是完全正常的行为,您无能为力。别担心,您是在重新显示,而不是重新绘制。

关于ios - 为什么在滚动 uitableviewcontroller 时会调用 layoutIfNeeded?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36408421/

相关文章:

objective-c - NSBlockoperation没有被取消

ios - 将uitableview添加到uiview didselectrowatindexpath后不称为ios

ios - 将 Int(数字)从 tableViewCell 传递给新的 ViewController

ios - NSInvalidArgumentException,同时将图像保存到相册

ios - 当管理对象上下文从持久性存储中加载数据时

ios - 如何在横向方向上设置垂直约束( Storyboard)

mysql - MySQL中的varchar和复合主键?

php - PHP的array()的缩写

mysql - 在 MySQL 中执行简单的更新查询需要很长时间

ios - 在动态框架中使用Realm?