4

根据时间概况,我发现我的应用由于调用了[UITable layoutSubviews],在[CALayer layoutSublayers]上浪费了太多时间。所以生成tableview的动作并不流畅,每当第一次点击按钮时,我都会等待近2秒才能看到下一个视图。下一个视图的表格视图中的每个单元格都有 8 个子视图,导致 layoutSubviews 占用了太多时间。因此我想知道如何优化这个进度,我不想在它的drawrect中构建一个包含这8个子视图的自定义单元格:以避免layoutSubviews。谁能帮我?

4

1 回答 1

1

我的猜测是,您所看到的只是一种症状,而不是真正的问题。

我会等待将近 2 秒,直到看到下一个视图

当您第一次尝试显示它时,您所描述的听起来像是您会预渲染所有表格视图的单元格(导致大量布局成本)。
在 中设置断点cellForRowAtIndexPath:,添加声音操作 + 激活“评估后自动继续”来调试它。
它应该只被调用 10 次左右(取决于同时可见的行数)。

如果您heightForRowAtIndexPath:在长列表中使用,那可能是您的问题的根源(取决于您的实施)。在这种情况下,请考虑避免使用它。如果您以 iOS 7 为目标,请查看tableView:estimatedHeightForRowAtIndexPath:它可能会有所帮助。(链接:https ://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDelegate_Protocol/Reference/Reference.html )。

于 2013-12-20T09:32:37.410 回答