【问题标题】:Calculate UITableView expected height计算 UITableView 预期高度
【发布时间】:2019-12-09 18:17:06
【问题描述】:

我有 UITableView 和 2 个执行自动布局的单元(很简单,UILabelUISwitch,以及 UILabelUIImageView)。我想得到 tableView heihgtUITableView 驻留在UIView,所以我做了以下操作:

 override func layoutSubviews() {
    super.layoutSubviews()
    if !isLayoutSubviewsDone {
      expectedHeight = tableView.contentSize.height
      isLayoutSubviewsDone = true
      didLayoutSubivews?()
    }
  }

不幸的是,tableView.contentSize.height 比它应该的要小。约 20%。如何获得准确的高度量?

【问题讨论】:

  • 如果单元格是固定高度,带有一个行标签,cellHeight * cellTotalRows = height
  • @Evgeniye 您是否尝试过在 tableView 上使用观察者。如果没有,请尝试参考我的答案。它会为您提供每个单元格的准确 tableView 高度。

标签: ios swift uitableview


【解决方案1】:

如何得到准确的高度?

没有什么神奇的方法可以根据内容调整表格大小。表格视图没有自动大小。它的大小并不是由其细胞的高度神奇地决定的。 您必须自己计算每个单元格的高度,一次一个,然后将它们相加。

【讨论】:

  • 看起来很乏味,那么内容大小返回多少?
  • 这无关紧要。是的,这很乏味。但这是以前解决的问题。
  • 我问什么是 tableView.contentSize.height 返回然后.. 有一个几乎正确的实际值
【解决方案2】:

如果您将观察者添加到 TableView,我相信您将获得准确的表格视图高度。试试下面的代码。

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        expectedHeight.constant = tableView.contentSize.height
    }

//MARK:- 在Reload tableView上添加观察者

   tableView.addObserver(self, forKeyPath: "tableViewObserver", options: [], context: nil)
   tableView.reloadData()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 2021-04-06
    • 2013-05-15
    相关资源
    最近更新 更多