UITableViewCell自动布局下的动态单元格高度问题在滚动时出现抖动

4
我想做类似于在uitableview中加载不同类型的自定义高度单元格。tableview单元格是子类化的,包含具有相应约束的标签。每个单元格都具有动态高度。
现在,即使在我的表重新加载数据之前,我也正在计算所需的高度以进行单元格调整,并将其缓存在我的模型类中,以便在设备上呈现数据时无需再次计算高度。
为了计算高度,我使用了来自Ray Wenderlich的教程,并且我已经应用了正确的高度集合到对象上。
问题来了。每当我出列单元格时,都会有一种小的抖动,这表明我的单元格正在被出列并滚动。
如何使这些移动平稳,以便在滚动视图时没有抖动?
高度在内部被赋值,并根据当前加载的数据类型获取值。
此外,我从cellForAtindexPath调用layoutIfNeeded。
欢迎提出建议。

我也遇到了同样的问题,请有人帮助我。 - vikramarkaios
1个回答

0

如果没有看到你在cellForRowAtIndexPath中的代码,也没有看到你的单元格及其相应的代码,那么很难说。以下是我会调查的一些常见问题:

单元格的内容是什么,单元格的视图层次结构有多复杂?

即使您提供了正确的预估高度,自动布局仍然需要进行一次处理,而复杂的视图层次结构将需要时间来解决。

单元格是否包含图像?

需要从文件中解压缩的图像(UIImage imageNamed:)可能会导致滚动问题,请检查图像是否比它们需要的大。如果需要,将此工作推迟到后台线程。

cellForRowAtIndexPath中,您是否调用了一个复杂的方法来配置单元格以便显示?

查看实际在cellForRowAtIndexPath中完成的工作,您的单元格子类或视图模型中是否触发了一个复杂的方法?

cellForRowAtIndexPath中,您是否向单元格视图层次结构中添加和删除了视图?

如果在单元格配置期间添加、删除、创建、从xib膨胀视图,或者进行约束等操作,这可能会减慢速度。尽量只做必要的事情。检查是否在单元格子类内部在cellForRowAtIndexPath期间运行任何代码,该代码可以移动到单元格的initWith...或awakeFromNib方法中(即只需在创建单元格时运行一次的代码,而不是每次显示单元格时都运行)。
此外,运行Instruments时间分析器,看看是否提供了更多线索。

非常感谢 @P-double 的建议。我会尝试根据这些建议检查我的代码,看看是否能提高性能。 - Akhilesh Sharma
当然可以,如果你想在这里或通过Github与我分享一些代码,我也可以看一下。 - Sam Clewlow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接