我正在尝试将最后一个tableView行的高度设置为与其他行不同。 我想要从这个单元格的高度“切割”10px,而不是创建一个新的单元格等。由于我已为高度设置了自动尺寸,因此我无法使用常量值。
这就是它的样子:
tableView.estimatedRowHeight = 54.0
return UITableViewAutomaticDimension
我想要这样的东西,但这不起作用:
if isLastLineBla {
tableView.estimatedRowHeight = 44.0
return UITableViewAutomaticDimension-10.0
} else { ...
答案 0 :(得分:0)
我希望您的dataSource
拥有tableView
并在dataSource.count
方法中返回numberOfRowsAt
。
现在实现heightForRowAt
方法以返回正确的值,如下所示:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if lastRow {
return 44
}else{
return UITableViewAutomaticDimension
}
}
并且不要在每个地方设置tableView.estimatedRowHeight = 44.0
,您需要设置的唯一位置是viewDidLoad
方法。
答案 1 :(得分:0)
认为你遇到了表视图工作方式的问题。表视图实现了一种延迟加载形式,因此内存中没有太多视图。
尝试使用表格视图委托方法根据单元格的索引“报告”正确的高度。
https://developer.apple.com/reference/uikit/uitableviewdelegate/1614998-tableview
答案 2 :(得分:0)
您需要做的是在您的单元格上设置一个标记,称为isLast
或类似的东西。然后,当从表视图委托中返回单元格时,如果它确实是表格的最后一个单元格,则应将该标记设置为true
。
然后,在您的单元格上,您应该能够根据该标志修改约束,使得单元格比其余单元格少10个点。我无法准确地告诉你什么约束以及如何修改它,因为我不知道你的细胞是怎样的。