【问题标题】:When is it most appropriate to update UITableView height NSLayoutConstraint什么时候更新 UITableView 高度 NSLayoutConstraint 最合适
【发布时间】:2015-10-01 11:45:20
【问题描述】:

TL;DR:UITableView contentSize 何时正确?

要更新我的表格高度约束,我使用以下函数:

func adjustHeightOfTableview()
{
    self.myTableView.layoutIfNeeded()
    let newHeight = self.myTableView.contentSize.height
    self.tableHeightConstraint.constant = newHeight
    self.view.setNeedsUpdateConstraints()
}

我尝试了这两种解决方案:

viewDidLayoutSubviews 中调用adjustHeightOfTableview

 override func viewDidLayoutSubviews()
    {
        super.viewDidLayoutSubviews()
        self.adjustHeightOfTableview()
    }

结果:表格根本没有出现在屏幕上。我想这是因为第一次调用viewDidLayoutSubviews 时内容大小为 0。由于表格高度设置为0,因此不会创建单元格并且不会再次调用viewDidLayoutSubviews

重新加载表后调用adjustHeightOfTableview(我有扩展名)

extension UITableView
{
    func reloadData(completion: ()->()) {
        UIView.animateWithDuration(0, animations: { self.reloadData() })
            { _ in completion() }
    }
}

//in my class:
self.relatedTableView.reloadData()
{
     self.adjustHeightOfTableview()
}

结果:桌子太高了。 contentSize 错误??

底线:如何以及在何处最好更新 UITableView 高度 NSLayoutConstraint?

【问题讨论】:

    标签: ios swift uitableview autolayout nslayoutconstraint


    【解决方案1】:

    找到了!答案就在这里:Height adjusted UITableView using Auto Layout

    高度约束需要是低优先级,它起作用了。

    我在重新加载表后和viewDidLayoutSubviews 中更新了约束 both,如问题中所述

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      • 2013-03-17
      • 2012-10-08
      • 2010-10-08
      • 2012-06-22
      相关资源
      最近更新 更多