如何使用autolayout刷新动态TableView页脚(不是节页脚)

时间:2017-10-11 12:14:26

标签: ios swift uitableview autolayout tableview

我有一个TableView footerView,带有两个可以容纳多行的标签。 我在viewDidLayoutSubviews中使用此代码:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    label1.preferredMaxLayoutWidth = tableView.frame.size.width - Constant.footerMarginSpace
    label2.preferredMaxLayoutWidth = tableView.frame.size.width - Constant.footerMarginSpace
    footerView.setNeedsLayout()
    footerView.layoutIfNeeded()
    footerView.frame.size.height = footerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
    tableView.tableFooterView =  footerView
}

当在显示视图之前设置标签值时,这样工作正常(标签最终将扩展到多个行并且视图的大小正在调整),但如果我在之后更新其内容,则视图赢了&#39 ; t更新其布局,即使使用tableView.reloadData()。

如果我在视图顶部推送另一个视图并将其关闭,则布局将是正确的。

更新TableView页脚的布局和大小的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为根据您的数据计算您需要的线数并使用返回正确的高度可能更容易 tableView(_:heightForFooterInSection:)

调用reloadData时,将调用此方法来布置tableview。