如何计算tableView行高并将值传递给heightForRowAtIndexPath

Hre*_*ich 5 height tableview custom-cell ios swift

我有一个带有自定义单元格的tableView。每个单元都有不同的界面、元素。它们都有不同的尺寸。每个单元格都有不同类型的元素及其数量。所有这些元素都是动态创建的,因此我正在创建它们,制作它们的框架并添加为子视图

因此, heightForRowAtIndexPath在cellForRowAtIndexPath之前执行的问题是,我正在创建行并构造其接口,但我不知道如何将计算出的高度传递给heightForRowAtIndexPath

如何计算之前的行高并将其值传递给 heightForRowIndexPath以正确绘制我的 tableView?

Sur*_*ely 3

如果您的单元格视图确实非常复杂并且每个组件的高度都取决于数据源。您可以尝试在方法中创建视图heightForRowIndexPath,然后将创建的视图缓存到视图控制器中的字典中,并直接在cellForRowAtIndexPath. 这样,当用户滚动表格时,您只需要创建一次视图。heightForRowIndexPath如果数据源变化不频繁,您也可以重用缓存的视图。

如果表视图有很多行,您应该返回高度的近似值,以estimatedHeightForRowAtIndexPath加快视图控制器的加载过程。否则在加载表视图期间,它将尝试计算所有行的高度,这可能需要大量时间。

但我真的不认为你的细胞会那么复杂。如果只有一些 UITextLabels 依赖于数据源的高度,您可以简单地只计算标签的高度,然后将其添加到其他组件的固定高度。