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

标签 ios performance uitableview uikit instruments

我正在尝试针对较慢的设备优化 UITableViewController,在消除了 tableview 可能缓慢的许多原因之后,我仍在尝试找出最后一个......

enter image description here 此屏幕截图来自工具,显示了在没有调用来获取 heightForRowAtIndexPathcellForRowAtIndexPath 的时间内最昂贵的调用(反复上下滚动约 10px,不会导致任何结果)单元格离开表格,或进行渲染)。

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

最佳答案

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

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

相关文章:

ios - 使用前置摄像头时需要镜像视频方向和处理旋转

ios - Unity for iOS 在后台占用大量内存

java - 如何一次对齐所有 jtable 单元格和标题?

iphone - iPhone 上应用程序的内存占用

ios - 如何制作 float /3D Touch 风格的桌面 View ?

iOS 使 UITableViewCell 中的 UIPickerView 适合一行

ios - 索引处的 Swift 方法 insertSubview 效果很好。但是如何重新定位所有 subview 以便为插入的 subview 腾出空间

ios - UITextField TableView 单元格 - iOS

arrays - VBA 嵌套 For 循环效率

objective-c - 2 单个 View 上的 TableView