GroupView,使用自我调整大小的部分标题,重新加载后,如果我向上滚动,tableview将跳转

时间:2017-04-17 10:43:43

标签: ios objective-c uitableview autolayout uitableviewsectionheader

我正在做这样的桌面视图:推特和评论; enter image description here

我尝试了几种架构。我没有找到足够的问题和讨论。我认为这是一个非常有意义的问题,所以我发布这些架构'性能和限制。

首先,使用整个单元格作为带注释的twitter,根据模型生成注释视图。使用自定义自动布局高度。 这种架构可以工作。但是如果一个Twitter有很多评论(30或更多),在旧的iPhone(4s,5,5s等)中,fps将降至40.显然阻止滚动流畅。这个性能瓶颈是只有这种架构的弱点。

其次,由于性能瓶颈,我想也许我可以在twitter单元格中放置注释tableview。而twitter单元格和嵌入式注释单元格也使用自行调整自动布局高度。但是尝试之后我发现了twitter单元格无法确认其高度,因为嵌入的注释tableview无法确认其高度本身。所以我需要计算嵌入式注释tableview的高度以确认twitter单元格的高度。这种架构也很有效。但它的性能瓶颈与第一架构相同。

第三,也是最重要的,使用节标题为twitter,单元格作为注释。也就是说,节是一个带注释的整个twitter。节标题和单元格都使用自定义自动布局高度。
这种架构的性能是最好的,甚至推特上有多达50多条评论,即使在iPhone5中,tableview滚动也非常流畅,fps至少为55.但是有一些我无法解决的奇怪问题。
我滚动到底部,tableview将重新加载下一页。在reloadData之后,第一个小问题是该部分标题解除,但在滚动后出现(稍后我发现如果我设置tableview标题,出现此问题,如果我删除tableview标题,这问题消失,如此困惑)。第二个也是更重要的问题是,如果我向上滚动,tableview将会跳过#34; .Below是gif演示。(我不知道如何将大gif发布到StackOverflow,我对不起) https://github.com/yutanchi/GroupTableViewSectionHeaderJump/blob/master/tableviewjump.gif
我认为原因是tableview使用估计的节标题高度而不是实际节标题高度。我搜索了很多信息,但没有什么可以帮助我。我很困惑,如果节标题的自我调整机制与细胞的自我调整机制相同。为什么自我调整细胞可以执行正确的行为,自我调整部分标题不。 由于这种架构具有明显的性能优势,我想确定自行调整大小的标题有什么问题,解决这些恼人的问题并使用架构。有人可以解释或讨论这个吗?

1 个答案:

答案 0 :(得分:0)

为此,您必须将所有约束放在所有元素的最右上角。 也 1-in viewDidLoad设置如下

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

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