使用 Kingfisher setImage with completion handler
方法从服务器下载图像后,如何更新像元高度?下载图像后,我使用以下命令调整其高度约束的大小:cell.imageHeight.constant = image.size.height * cell.frame.size.width / image.size.width
。
已下载图像并使用cellForRow
方法进行设置,但我也尝试在willDisplayCell
中进行了同样的操作。我还检查了setImage方法的完成处理程序中的cell.tag == indexPath.row
。
我已经尝试了以下方法,但都无效:
heightForRow
是UITableViewAutomaticDimension
,而estimatedHeightForRowAt
是某个值(可能的最大单元格),以及这2个的所有其他组合reloadRows
在indexPath cell.setNeedsLayout
,layoutIfNeeded
或layoutSubviews
dispatch main async
它们中的任何一个都遇到相同的问题:滚动表跳动,第一次显示时单元格高度不正确并进行更新,我必须上下滚动以隐藏和显示该单元格,某些单元格的tableview计算出的高度错误
如果我滚动到顶部,一切都很好,因为所有图像已经在缓存中。
每个人如何做到这一点? Facebook或instagram如何做到这一点?从任何API获取单元格高度后如何更新?
答案 0 :(得分:0)
您是否尝试过将以下内容添加到viewDidLoad:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "investmentType")
@JsonTypeIdResolver(InvestmentResolver.class)
public abstract class Investment {
}
然后,无论您在哪里填充其他元素,您当然都需要调整这些元素的约束和高度。
我建议对单元进行子分类,并为要为其填充数据的单元创建一个set方法。这样,您可以调整单元格中元素的约束以更好地处理填充单元格中的数据。