使用heightForRowAtIndexPath和UITableView scrollToBottom时初始加载性能较差

时间:2015-07-14 00:05:23

标签: uitableview core-data scroll uiscrollview heightforrowatindexpath

我有一个UITableView,它通过适当的机制(使用FetchedResultsController等)从CoreData读取信息。此信息可以是文本信息,也可以是加载到tableview中的本地图像的URL。

需要以自下而上的方式在表格中填充数据(类似于消息传递应用程序)。我的目标是iOS 8+,但如果我使用estimatedHeightForRowAtIndexPath,我会在3 +多行标签和图像上出现可怕的混乱。估计似乎太过分了,除非它是一行UILabel。我的预感是以自上而下的方式估计细胞高度,使得细胞高度从细胞顶部到细胞底部生长。这意味着从上到下滚动很好,但从下到上不是,因为当我向上滚动时,单元格会“向下”动态调整大小。

我目前正在使用heightForRowAtIndexPath来计算单元格高度。这个问题是视图最初加载需要很长时间,因为单元格高度都是一次计算的。我正在使用单元格高度缓存来存储单元格高度,以便一旦加载了视图,滚动就会很平滑。

所以我的问题是这个:你怎么使用heightForRowAtIndexPath而不用3-5秒的初始​​负载命中?

跟进红利问题,有什么方法可以可靠地使用estimatedHeightForRowAtIndexPath,当你的高度大不相同的单元格?我们在谈论从44px到300px的任何地方。根据我的阅读,在这种情况下,我根本无法使用estimatedHeight计算。

我已经用尽所有关于estimatedHeight / heightForRowAtIndexPath的stackoverflow帖子,我现在开始多次查看相同的帖子。所以我被卡住了。

1 个答案:

答案 0 :(得分:0)

为什么要在表格中填充几行以填充可见区域以及之后 viewDidAppear开始在表一或两个上面填充旧消息 在动画时没有,自动或其他什么。 这种方式推迟了uitableview人口 我认为你会得到一个可以接受的表现。

或者你可以用skype的方式来做,推迟表的人口 使用较旧的消息,直到表格从顶部边缘反弹。