由于不同的ios版本,对tableview的生命周期有所不同,所以计算每行的高度后,不能直接在cellforRow里面递增,因为有可能执行多次该方法,就多加了。而是要把每行高度存下来,再在最后一个执行的时候计算高度,设置到tableview外层的高度里去。
var tableview1HeightDic:Dictionary<Int,CGFloat> = Dictionary.init()
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let object = repairDataArray[indexPath.row]
let repairContentValue =
///调用计算文字的高度方法获取文字控件的高度
self.calculateHeightLabelString(object.checkMemo.removeWhiteSpacesFromStringBothEnds(), UIFont.systemFont(ofSize: 14), 104.5)
tableview1HeightDic.updateValue(70 + repairContentValue - 21, forKey: indexPath.row)
///在最后一次执行的时候,改变tableView的高度
if indexPath.row == repairDataArray.count - 1{
var total:CGFloat = 0
for item in tableview1HeightDic{
total = total + item.value
}
self.tableView1H.constant = total
}
return 70 + repairContentValue - 21
}