0

我正在尝试将最后一个 tableView 行的高度设置为与其他行不同。而不是创建一个新的单元格等,我想从这个单元格的高度“切割”10px。因为我已经为高度设置了自动尺寸,所以我不能使用一个常数值。

这是它的样子:

tableView.estimatedRowHeight = 54.0
return UITableViewAutomaticDimension

我想要这样的东西,但这不起作用:

if isLastLineBla {
    tableView.estimatedRowHeight = 44.0
    return UITableViewAutomaticDimension-10.0
} else { ...
4

3 回答 3

0

你所要做的就是在你的单元格上设置一个标志,调用isLast或类似的东西。然后,当从表格视图委托返回单元格时,您应该将该标志设置为true是否确实是表格的最后一个单元格。

然后,在您的单元格上,您应该能够根据该标志修改您的约束,这样该单元格比其他单元格少 10 个点。我不能确切地告诉你什么约束以及如何修改它,因为我不知道你的单元格是什么样子。

于 2017-02-22T16:28:03.540 回答
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方法。

于 2017-02-22T15:57:44.427 回答
0

认为您遇到了表格视图工作方式的问题。表视图实现了一种延迟加载的形式,因此内存中的视图不会太多。

尝试使用表格视图委托方法根据单元格的索引“报告”正确的高度。

https://developer.apple.com/reference/uikit/uitableviewdelegate/1614998-tableview

于 2017-02-22T15:58:53.203 回答