是否可以在自定尺寸单元中使用自定尺寸单元?

时间:2019-05-10 10:00:17

标签: ios swift uitableview uitableviewautomaticdimension

我想在带有自定义单元格的表格视图中具有自定义单元格。但是在第一次初始化时,某些单元格是不正确的。滚动到底部后,单元格将再次显示,单元格大小正确。在屏幕截图中,您可以看到顶部的两个单元格的底部有一个空白,而第三个单元格没有。它们都应该看起来像第三个。

enter image description here

这是我的主要项目中的问题。 Screenshot

2 个答案:

答案 0 :(得分:0)

您不应将UITableView包裹到UITableViewCell中,而应尝试使用UITableView Sections来为UITableView添加额外的深度级别。

答案 1 :(得分:0)

在自动调整大小的单元格中自动调整单元格大小的问题有些棘手,因为您必须了解其工作原理。 UITableView大部分时间都可以估算。它通常不能精确地计算contentSize,因为要精确地计算它,它必须首先实例化每个单元格,对其进行布局,然后计算其大小。

仅针对显示的单元格(在当前滚动框中可见)计算精确值。

棘手的部分是,直到显示外部单元,才会显示内部单元(在外部单元内部),因此外部单元的大小无法正确计算。另外请注意,除非明确指出,UITableView不会自动更新像元高度。

如果真的需要这样做,解决方案是在显示外部单元格之前正确计算其高度并手动设置高度约束。

如果您知道高度(来自数据源),这很容易。如果您实际上需要计算内部表的高度,则可以执行以下操作:

// make the table high enough to display all cells
innerTableHeightConstraint.constant = 2000
// reload table
innerTable.reloadData()
// force layout
innerTable.layoutIfNeeded()
// now the contentSize is correctly calculated
innerTableHeightConstraint.constant = innerTable.contentSize.height

整个概念很棘手,理想情况下,您应该更喜欢使用UICollectionView或表节。当您使用内部表视图时,内部表不会有任何单元格重用,并且性能会受到影响。