【发布时间】:2019-05-16 14:20:58
【问题描述】:
我有一个带有自定义单元格的 UITable 视图。有些单元格有一个按钮来展开/折叠。有时,正在调整大小的单元格似乎会在 UI 中跳转。
我正在通过heightForRowAtIndexPath: 使用自动布局和动态高度计算。我浏览了几个教程,包括 this one on self-sizing table view cells,我用它来调查这个问题。
要重现此问题,请在表格中滚动并展开几个单元格。点击部分显示的单元格。单元格看起来会跳跃而不是停留在原地。
例子:
当我在选择单元格后注释掉滚动到单元格顶部的行时,问题更加明显。
我尝试了@DonMag 的建议。对于小型蜂窝,问题不会发生。当我将单元格高度增加到占屏幕高度的 60% 以上时,就会出现跳跃动画 (video)。
我变了
Question Label.top = topMargin + 8
到
Question Label.top = topMargin + 800
当我深入代码时,调用时似乎出现了问题
[tableView beginUpdates];
[tableView endUpdates];
但是这个 sn-p 是表格视图重新计算单元格高度所必需的。
我希望单元格在调整大小时保持原位,没有跳跃动画。
【问题讨论】:
-
有多种方法可以展开/折叠单元格,因此您可能需要尝试查看几种不同的方法。一个常见的问题是当使用多行标签时……标签中的文本是垂直居中的,因此随着标签的扩展,文本“显示”并不总是看起来正确。我最近整理了一个类似于您正在尝试做的简单项目。您可以在这里查看github.com/DonMag/ExpandCollapse,看看您是否可以从中获得一些帮助。
-
谢谢,@DonMag。我已经用更多信息更新了描述
-
如果您的单元格/行会变得那么高,请确保给 tableView 一个估计值,例如
tableView.estimatedRowHeight = 880(在viewDidLoad()中。这应该注意“跳跃”。