异步布局更改后重新布局可见单元

时间:2017-01-03 03:30:38

标签: ios autolayout tableview

我有一个UITableViewController,其中包含一系列单元格,我使用自动布局进行布局。我将rowHeight设置为UITableViewAutomaticDimension,estimatedRowHeight设置为96,并设置单元格的约束,以便底部约束的优先级为999.当布局单元格的所有信息在cellForRowAtIndexPath中可用时,一切正常。

然而,我们现在正试图异步获取卡片图像,并且在他们从服务器下载完成之前不知道它们有多大。现在,在下载图像的完成处理程序中,我更新图像视图的高度约束常量,并在单元格上调用layoutIfNeeded()。如果单元格在屏幕外,或者在屏幕外滚动然后再在屏幕上滚动,则此功能非常有效。但是如果图像开始加载时单元格在屏幕上,则它不会再次布局单元格,直到它向后滚动为止。

如何以高效的方式触发这些单元格再次布局?我曾尝试在tableview上调用reloadRowsAtIndexPaths和layoutSubviews,但这些都滞后了很多。

0 个答案:

没有答案