UITableViewAutomaticDimension-10.0

时间:2017-02-22 15:51:06

标签: swift xcode uitableviewautomaticdimension

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

这就是它的样子:

tableView.estimatedRowHeight = 54.0
return UITableViewAutomaticDimension

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

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

3 个答案:

答案 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个点。我无法准确地告诉你什么约束以及如何修改它,因为我不知道你的细胞是怎样的。