使用UITableViewAutomaticDimension重新加载tableview

时间:2018-08-20 06:50:40

标签: ios swift uitableview

今天,我经历了表格视图的多种变化。每次我调用reload函数时都会反弹,因为我的表视图单元是动态的并且具有不同的内容类型,因此我将UITableViewAutomaticDimension的属性用于行高。

1 个答案:

答案 0 :(得分:1)

因此,要解决该表重新加载功能上的跳动问题。我必须存储来自tableView willDisplay单元格方法的行的高度,并在EstimateHeightForRowAt中使用相同的高度。请在下面找到代码。希望它能对某人有所帮助。

var height_OfCells = NSMutableDictionary()

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    if let height = height_OfCells.object(forKey: indexPath) {
        return height as! CGFloat
    }

    return UITableViewAutomaticDimension
}

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    height_OfCells.setObject(cell.frame.size.height, forKey: indexPath as NSCopying)
}