初始加载性能较差,高度为RowAtIndexPath和UITableView scrollToBottom

初始加载性能较差,高度为RowAtIndexPath和UITableView scrollToBottom,uitableview,core-data,scroll,uiscrollview,heightforrowatindexpath,Uitableview,Core Data,Scroll,Uiscrollview,Heightforrowatindexpath,我有一个UITableView,它通过适当的机制(使用FetchedResultsController等)从CoreData读取信息。此信息可以是文本信息,也可以是要加载到tableview中的本地图像的URL 数据需要以自下而上的方式填充到表中(类似于消息传递应用程序)。我的目标是iOS 8+,但如果我使用EstimatedHeightForrowatineXpath,我会在3+多行标签和图像上产生可怕的抖动。除非是一条直线,否则估计值似乎太远了。我的直觉是,细胞高度是以自上而下的方式进行估计

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

数据需要以自下而上的方式填充到表中(类似于消息传递应用程序)。我的目标是iOS 8+,但如果我使用EstimatedHeightForrowatineXpath,我会在3+多行标签和图像上产生可怕的抖动。除非是一条直线,否则估计值似乎太远了。我的直觉是,细胞高度是以自上而下的方式进行估计的,因此细胞高度是从细胞顶部向细胞底部增长的。这意味着从上到下滚动可以,但从下到上则不行,因为当我向上滚动时,单元格的大小会动态地“向下”调整

我目前正在使用heightForRowAtIndexPath计算单元格高度。问题是视图需要很长时间才能开始加载,因为单元高度都是一次计算出来的。我使用单元格高度缓存来存储单元格高度,这样一旦加载视图,滚动就会非常平滑

所以我的问题是:如何在不进行3-5秒初始加载的情况下使用heightForRowAtIndexPath

还有一个额外的问题,当你们有高度相差很大的细胞时,有没有可靠的方法来使用EstimatedHeightForrowatineXpath?我们谈论的是从44像素到300像素的任何地方。据我所知,在这种情况下,我根本无法使用估计重量计算


我已经用尽了所有关于Rowatindexpath的估计高度/高度的stackoverflow帖子,现在我开始不止一次地查看相同的帖子。所以我被卡住了。

为什么woncha在表中填充几行来填充可见区域和之后 ViewDidDisplay开始将旧消息填充到表的顶部一两条 当时没有动画,自动或其他。 这种方式推迟了uitableview人口 我觉得你的表演还可以

或者你可以用skype的方式,推迟表格的填充
在桌子从顶部边缘反弹之前,使用旧消息。

仪器告诉您什么?运行时档案器,而不是预感,你会知道延迟在哪里。预感是一个猜测,苹果如何动态分配屏幕空间的细胞。我可以肯定地知道,RowAtIndexPath的高度是最初3-5秒加载命中的原因。当视图第一次加载时,它将消耗73%的运行时间。没有任何东西超过1-2%。很高兴知道你用仪器运行了它。heightForRowAtIndexPath中的哪一行花费了时间?这是一次打猎还是别的什么?发布仪器配置文件将非常有帮助。对于这种方法,我在时间配置文件中没有得到任何其他信息。你希望我在这里找到什么信息?我无法比现在更有效地计算高度。我想我将把高度缓存到磁盘,以加快速度。如果你能给我举一个例子,那会很有帮助。在instruments中,如果你双击方法名称,它会显示该方法的源代码和每行消耗的百分比。这会告诉你慢度在哪里。从那里开始,它会指引你正确的方向。