由于不同的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
}
本文介绍了一种在iOS应用中实现UITableView行高自适应的方法。通过计算每行内容的实际高度并将其存储起来,在布局的最后一刻更新TableView的整体高度,确保了即使在不同iOS版本下也能正确显示每一行的内容。
2万+

被折叠的 条评论
为什么被折叠?



