heightForRowAtIndexPath
是一项非常昂贵的操作。在我的情况下,我有成千上万,所以我想我可能会分批打破桌子,一次只显示50个单元格,当用户接近表格视图边界的末尾时,使用insertRowsAtIndexPaths:
插入50个以上行。但是,每次插入50个新行时,都会为表的所有行调用heightForRowAtIndexPath
,而不仅仅是我刚插入的那些行。这是预期的行为吗?为什么是这样?行的高度必须用字体计算字符串的高度,因此每次插入新行时计算整个表的高度都是非常低效的。有没有解决方法?
答案 0 :(得分:2)
这是预期的行为吗?为什么是这样?
是的,这使得可以将具有不同高度的行插入到一个表中。
有没有解决方法?
在初始化期间仅计算一次高度,以防所有行具有相等的高度
每次调用heightForRowAtIndexPath
时,只需返回缓存的结果。
答案 1 :(得分:2)
我同意@Anne。需要调用它,因为表中的行位置(它只是一个滚动视图)是由它上面的行的位置和高度建立的。
@ Anne的处方也非常正确,这可以归结为使高度方法尽可能快地运行。
但真正的问题是给你的。我认为你应该问的“性能”问题是关于人的表现,翻阅1000行。
假设一次拇指轻弹可以滚动10行并在一秒钟内执行。那是每千分之1.5分钟。每天使用您的应用程序滚动5000行的一百万用户每年将耗费190万个工作日,从而按比例减少国内生产总值。
我祝你取得圆满成功,但在分发1000个UITableView行的应用程序之前,请考虑全球经济的不稳定状态。