ios UITableViewCell以编程方式在drawRect vs layoutSubviews中创建

Muk*_*esh 5 uitableview drawrect ios layoutsubviews swift

我一直试图UITableViewCell通过Autolayout 创建复杂但是它在滚动时给出了巨大的性能滞后,所以我决定采用基于帧的方式,即以编程方式.

单元格布局的复杂性就像Facebook卡片,其中每个单元格与动态文本和图像不同.

我试图渲染单元格,layoutSubviews但滚动仍然很差,但比Autolayout更好.

我也尝试渲染单元格drawRect,这提供了最佳性能但滚动时我无法更新帧,因为它只被调用一次.

有人可以指导我最好的情况,我可以用最好的滚动性能.我被卡住了.

Ori*_*ion 0

我还得出了同样的结论,即在处理具有一定复杂性的单元时,使用带有约束的故事板会变得太慢。我有 10 多种不同类型的细胞。在这种情况下我必须使用框架。

恐怕除了使用子视图的框架来布局单元格之外没有其他方法。使用 heightForRowAtIndexPath 和 cellForRowAtIndexPath 方法,您可以完全设置单元格的样式。

调用的第一个方法是 cellForRowAtIndexPath。在这种方法中,您可以完全设置单元格的样式,布置视图等。完成所有操作后,您还可以确定单元格的高度。然后,您可以从父视图的框架中获取单元格高度并使用它。

在 heightForRowAtIndexPath 中,如果您将高度保存在数组中,则可以使用一行返回单元格的高度。

我有点忽略了layoutsubviews 方法,因为我必须重构一堆现有代码。然而,我仅在 cellForRowAtIndexPath 中布置单元格,而不是在layoutsubviews 方法中布置单元格。在这种方法中,我可以使用子视图的高度来计算父视图的高度。在布局子视图中,视图稍后布局,这可能会导致问题。

无论如何,希望这些信息对某人有用。