我在一个应用程序中有一个要求,其中几乎每个 uitableviewcell 都具有不同的高度。此外,许多单元格都有带有文本的图像(1,2 或 3)。
早些时候我使用heightForRowAtIndexpath但像往常一样,性能非常可悲,感觉很生涩,
我做了以下来解决这个问题,
- 实现了估计的HeightForRowAtIndexPath
- 用于计算高度的缓存,用于后续调用estimatedHeightForRowAtIndexPath
- 在所有单元格中使用自动布局。
这样,与以前的方法相比,性能要好得多,但是,由于列表是生涩的,因此估计的HeightForRowAtIndexPath 随后被调用了很多次。
如果单元格编号N被加载,estimatedHeightForRowAtIndexPath被调用N-1次,如果我们在列表中走得更远,就会发生这种情况,如果我们向后走,它就会知道估计的高度。
请帮助我理解为什么会发生这种情况,以及我可以做些什么来提高性能并使滚动更流畅和流畅。