我有tableview我显示图像在它与SDWebImage荚。我改变了尺寸后,下载的图像,它的工作良好,但在第一次加载后,在初始加载的尺寸改变不适用。这是我的代码
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: reusableCellId) as? FeedTableViewCell
if feedTableData.count > indexPath.row {
let rowData = feedTableData[indexPath.row]
cell?.feedImage?.sd_setImage(with: URL(string: rowData.poster), completed: { (image, error, cacheType, imageURL) in
if let image = image {
//cell?.configure(image: image)
let hRatio = image.size.height / image.size.width
let newImageHeight = hRatio * UIScreen.main.bounds.width
cell?.imageHeightContarint?.constant = newImageHeight
cell?.feedImage?.image = image
cell?.feedImage?.setNeedsLayout()
cell?.feedImage?.layoutIfNeeded()
}
})
//cell?.fillInfo(info: rowData)
}
return cell ?? UITableViewCell()
}
1条答案
按热度按时间wwwo4jvm1#
当表格视图布局其行/单元格时...
heightForRowAt indexPath
实现了吗?tableView.rowHeight
是否设置为特定值?表格显示后,不再修改行高。
所以,如果你的代码改变了单元格的内容,单元格的高度也会改变,我们必须通知控制器,让它重新布局单元格。
对于您的情况-使用来自(我假设)SDWebImage的
sd_setImage(...)
,您需要在完成块的末尾通知控制器。所以:
顺便说一句,你在单元格出队时做了几件不正确的事情(为了摆脱所有那些
?
),你应该在完成块中使用[weak self]
。但这些信息可以通过研究适当的方法来找到。