组表TableView,使用自调整节标题,重新加载后,如果向上滚动,tableview将跳转

我正在做一个像这样的tableview:一个推特和评论; 在这里input图像描述

我已经尝试了几种架构。对此我没有find足够的问题和讨论。 我认为这是一个非常有意义的问题,所以我发布这些架构的性能和局限性。

首先,将整个单元格用作带有注释的twitter,根据模型将生成哪个注释视图。细胞使用自定义的自动布局高度。
这个架构可以工作。但是如果一个twitter有很多评论(30或更多),在旧的iPhone(4s,5,5s等等)中,fps会下降到40。只有这个架构的弱点。

其次,由于性能瓶颈,我想也许我可以在twitter单元格中放置一个评论表格视图,而twitter单元格和embedded的评论单元格也使用自定义的自动布局高度。但是经过尝试,我发现twitter单元格不能确认其高度,因为embedded的评论表视图无法确认其高度本身。所以我需要计算embedded评论表视图的高度来确认twitter单元格的高度。 这种架构也运行良好,但其性能瓶颈与第一种架构相同。

第三,也是最重要的,使用部分标题作为twitter,单元格作为注释。也就是说,一个部分是带有注释的整个twitter。部分标题和单元格都使用自动调整自动布局高度。
这个架构的性能是最好的,即使twitter有多达50多个评论,即使在iPhone5桌面滚动非常顺利,fps至less55.但有一些奇怪的问题,我不能解决。
我滚动到底部,tableview将重新加载下一页page.After reloadData后,第一个小问题是该节头解雇,但滚动后出现(后来我发现,如果我设置tableview标题,这个问题出现,如果我删除tableview标题,这问题消失了,所以困惑)。第二个也是比较重要的问题是,如果向上滚动,tableview会“跳跃”。下面是gif的演示。(不知道怎么把大的gif发布到StackOverflow,对不起) https: //github.com/yutanchi/GroupTableViewSectionHeaderJump/blob/master/tableviewjump.gif
我认为原因是tableview使用估计部分标题高度,而不是实际部分标题高度。 我已经search了很多信息,但没有什么可以帮助我。我很困惑,如果节头的自我调整机制是一样的细胞的自我大小机制。为什么自我大小的细胞可以执行正确的行为,自我大小的节头不。 因为这个架构有明显的性能优势,所以我想弄清楚自定义部分头部有什么问题,解决这些烦人的问题并使用架构。有人解释或讨论这个问题吗?

为此,您必须将所有约束条件从顶部到底部都留给所有元素。 另外1-in viewDidLoad设置如下

self.yourtableView.estimatedRowHeight= your estimated_height_for_Cell yourtableView.rowHeight = UITableViewAutomaticDimension 

2-设置的行数为零对于属性检查器中的标签。