获取tableView内容的完整高度

时间:2019-04-01 20:03:46

标签: swift autolayout tableview

我面临以下问题:

  • 我有包含tableView的容器视图,tableView包含单元格和页脚
  • 在页脚中,我有UIView,其中包含另一个带单元格的tableView(由于TableView内容的日期需要更改选项卡,因此它不透明到PageBoy中)

我想实现什么?

我想调整tableView页脚的大小以适合其tableView的内容。

我正在做什么以实现这一目标?

我已经准备好一些研究,开发了ResizableTableView,其代码如下:

class ResizableTableView: UITableView {
    override var intrinsicContentSize: CGSize {
        layoutIfNeeded()
        return contentSize
    }
    func reloadData(with completion: @escaping () -> ()) {
        animator.animate(withDuration: 0, options: [], animations:  {
            self.reloadData()
            self.invalidateIntrinsicContentSize()
        }, completion: { _ in
            completion()
        })
    }
}

问题是,在第一次加载时,视图的大小无法正确调整-tableView contentSize没有给我全高,内容被剪切了。

也许,有人将tableView的高度与其内容匹配,也会遇到类似的问题。我读过很多类似的问题,但没有一个与我的问题相符。

我试图重新加载tableView数据,然后委托让我的viewController重新调整tableView页脚的大小,但这在第一次加载时也失败了。单元格正在通过自动布局调整大小-这可能是此实现中的关键问题。

1 个答案:

答案 0 :(得分:1)

在tableView的页脚中包含一个新的TableView不好。 与其添加页脚视图,不如添加新部分并使用自定义单元格,这更好。

这样,即使您不必照顾第二部分(表视图的页脚)的动态高度的单元格。