在我们的应用中,我们经常使用UITableViews在可滚动列表中显示不同的自定义UITableViewCells,方法是使用类型为数据源的显示项列表。然后,在TableViewcellforRowAt函数中,根据显示项的类型决定使用哪个自定义UITableViewCell

这种方法现在在UITableViewCell中引起问题,该视图从Internet加载并显示图像,因为视图尚不知道图像的大小。

这是我要构建的自定义视图:see custom UITableViewCell

但是,我尝试仅从自定义视图中的图像开始。由于TableView行不知道图像的大小,因此在显示视图时不会显示任何图像。仅在向下滚动并向上滚动到应有图像的位置之后,单元格才按照我希望的大小进行调整。我将图像的顶部,顶部和底部约束设置为0,以便图像完全填充单元格。

加载图像并将其显示在此类单元格中并根据实际图像尺寸调整大小的最佳实践是什么?

在我设置的viewDidLoad

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 80


cellForRowAtIndexPath

let cell: CustomTableViewCell = tableView.dequeueReusableCell(withIdentifier: "CustomTableViewCell", for: indexPath) as! CustomTableViewCell
cell.imageView.contentMode = .scaleAspectFit
tableView.beginUpdates()
cell.imageView.kf.setImage(with: URL(string: item.getImageUrl()), placeholder: nil, options: nil, progressBlock: nil) { (image, error, cacheType, url) in
    tableView.endUpdates()
}
cell.isUserInteractionEnalbed = false
cell.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: .greatestFiniteMagnitude)
cell.accessoryType = .none

return cell

最佳答案

在配置表视图或加载视图时:
写这些:

yourTableView.estimatedRowHeight = 70.0 // this can be any height you want to set when table loads first time.
yourTableView.rowHeight = UITableViewAutomaticDimension


或者,如果您是从Storyboard / xib进行配置,则可以从Storyboard / xib进行设置。

关于ios - 具有不同的UITableViewCells和动态内容的UITableView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51839889/

10-11 03:30