将tableview的大小调整为swift中的最后一行

时间:2016-10-11 09:46:56

标签: ios swift uitableview resize height

我想在android中创建类似自动完成文本视图的东西,这意味着在叠加视图中的tableview显示searh的结果。为此,我创建了一个包含tableview的视图(需要显示特定的背景)。这工作正常,但当tableview只有1行时,tableview不会调整其高度。

我写

tableView.tableFooterView = UIView()

但它只是抑制了多余的分隔符,而不是改变高度。

你能帮我吗?

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

您应该手动更新tableView的框架。 如果您正在使用autolayout,请为tableView的高度添加IBOutlet:

@IBOutlet weak var heightConstraint: NSLayoutConstraint!

我认为tableView的高度受限于一些固定值。如果它取决于屏幕高度,只需用计算变量替换maxTableViewHeight

let maxTableViewHeight = CGFloat(300)

创建一个更新tableView高度的方法。如果tableView的内容高度小于maxHeight:

,它将确保调整tableView的大小
func updateTableViewFrame() {
    autocompleteTableView.layoutIfNeeded() //to make sure you have updated contentSize
    let height = autocompleteTableView.contentSize.height
    heightConstraint.constant = min(height, maxTableViewHeight)
    view.layoutIfNeeded()
}

现在,您需要做的就是在数据源更新时调用此方法。在你的情况下,这应该改变用户输入的值。