【发布时间】:2015-09-23 05:57:52
【问题描述】:
亲爱的程序员们,
我最近更新到 Xcode 7 和 Swift 2,现在,每当我向下或向上滚动时,屏幕都会跳动一点(没什么太疯狂的),但它会使导航变得迟钝。 每当我在调用 cellForRowAtIndexPath 时在屏幕上显示一个新单元格时,就会发生这种情况。
在 cellForRowAtIndexPath 中,对于每个 Cell,我实际上使用 HanekeSwift、标签和按钮(使用 switch、case、if 等)设置了一堆 imageView。
奇怪的是,每当我在 cellForRowAtIndexPath 中评论大部分设置时,跳跃的部分就消失了。
我已经尝试评论每个部分,但我没有设法检测到是什么导致了跳转部分。或者我想知道这是否与有很多治疗有关。
每个单元格的高度不同,我使用自动布局来检测每个单元格的高度。 timelineTableView.rowHeight = UITableViewAutomaticDimension 时间线表视图.estimatedRowHeight = 600
我也尝试实现estimatedHeightForRowAtIndexPath委托方法并手动计算每个单元格的高度,但没有成功。
任何人都知道为什么我会经历跳动的部分,以及为什么当我将所有内容都注释掉时,跳动就消失了?
更新 1: 在玩 Time Profiler 时(注释掉我的 cellForRowAtIndexPath 方法中的一些函数),我意识到当 cellForRowAtIndexPath 的运行时间低于 80-90ms 时,我看不到跳跃的部分。而且跑的时间越长,感觉跳的越多
【问题讨论】:
-
在设备上运行时使用仪器中的时间分析器来查找慢行。但这是在细胞制备方法中要做的很多!您还通过根据设备尺寸进行切换来击败自动布局的要点:)
-
您认为这可能与大量细胞制备有关吗?我有选择吗?我必须为每个 Cell 设置所有这些。
-
并非所有这些都需要每次都完成。但是使用工具来找到你的慢代码,不要猜测。
-
这是结果,我的 loadItem 函数中耗时最长的两个过程:imgur.com/JvPDFWw
-
如果您使用动态大小的单元格(高度),请务必实现 heightForRowAtIndexPath 或estimateHeightForRowAtIndexPath
标签: ios xcode swift uitableview ios9