我一直试图通过Autolayout创建复杂的UITableViewCell
,但是在滚动时它会产生巨大的性能延迟,所以我决定以编程方式进行基于帧的。
单元格布局的复杂性就像Facebook卡片,其中每个单元格都与动态文本和图像不同。
我尝试在layoutSubviews
中渲染单元格,但滚动仍然很差,但比Autolayout更好。
我还尝试在drawRect
中渲染单元格,这样可以获得最佳性能但滚动时我无法更新帧,因为它只被调用一次。
有人可以指导我最好的情况,我可以选择最佳的滚动性能。我被卡住了。
答案 0 :(得分:0)
我也得出了相同的结论:在处理某种复杂性的单元格时,使用故事板机智约束会变得太慢。我有10多种不同类型的细胞。在这种情况下,我不得不使用框架。
我担心除了使用子视图的框架布置细胞之外别无他法。使用heightForRowAtIndexPath和cellForRowAtIndexPath方法,您可以完全设置单元格的样式。
调用的第一个方法是cellForRowAtIndexPath。在这种方法中,您可以完全设置细胞的样式,从而设置视图等。完成所有操作后,您还可以确定细胞高度。然后,您可以从父视图的框架中获取单元格高度并使用它。
在heightForRowAtIndexPath中,如果您将高度保存在数组中,则可以使用一行返回单元格的高度。
我忽略了layoutsubviews方法,因为我不得不重构一堆现有的代码。然而,我只在cellForRowAtIndexPath而不是layoutsubviews方法中放置了单元格。在这个方法中,我可以使用子视图的高度来计算父高度。在layoutsubviews中,视图将在稍后布局,这可能会导致问题。
无论如何希望这些信息对某人有用。