【发布时间】:2019-04-18 16:41:50
【问题描述】:
我有一个带有 UITableViewAutomaticDimension 的 UITableViewCell,它由图像和标题组成。从 API 获取数据后,我重新加载 tableView,但只显示 UILabel 中的标题而不显示图像,如下图所示
滚动 tableView 后,图像会出现并根据那里的大小进行调整。像下面
我希望这发生在滚动之前。
我已经尝试过的事情
- 使用占位符图像,但会导致下载的图像采用占位符图像大小,并且滚动后单元格大小会正确更新。
- 根据需要使用布局或 setNeedLayout
- 等待文件下载,然后在计算大小后返回单元格,但这会导致滚动时滞后于表格视图
我的 cellForRowAt 代码
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: Constants.custom.rawValue) as? CustomCell else {return UITableViewCell()}
cell.update(model: arrImages[indexPath.row])
return cell
}
我的单元类逻辑
更新方法
func update(model: ImageModel) {
self.presentModel = model
}
单元格中的 UI 更改
var presentModel: ImageModel? {
didSet{
if let url = presentModel?.imgURL {
imgView.kf.indicatorType = .activity
imgView.kf.setImage(with: url)
}
lblTitle.text = presentModel?.title
}
}
补充信息 我正在使用 KingFisher 第三方下载图片。
【问题讨论】:
-
从 url 加载图像时,您应该重新加载表格视图。
-
我有多个单元格,每个单元格都有自己的图像。
-
@user832 请看我的回答。希望对您的情况有所帮助。
-
@Socram 我检查了一下,但 cell.setsNeedLayout 对我不起作用。
标签: ios uitableview swift4