【问题标题】:Get full height of content of tableView获取tableView内容的全高
【发布时间】:2019-04-01 20:03:46
【问题描述】:

我面临以下问题:

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

我想达到什么目标?

我想调整 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 页脚的大小,但这在第一次加载时也失败了。单元格通过自动布局调整大小 - 这可能是此实现中的一个关键问题。

【问题讨论】:

  • 你能覆盖contentSize属性并在didSet中调用invalidateIntrinsicContentSize()吗?
  • 而不是依靠UITableVIew 为您提供contentSize,您应该计算尺寸,因为您已经拥有单元格高度和项目数的信息。
  • 这是优化的,因为您不需要首先渲染 UITableView 来获取大小。
  • 可能我无法计算大小,因为单元格的高度不同。此外,我尝试调用 ``` invalidateIntrinscicContentSize() ``` 但它也未能返回正确的大小。

标签: swift autolayout tableview


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    • 2018-08-16
    • 2012-10-18
    • 2013-09-04
    • 1970-01-01
    相关资源
    最近更新 更多