快速调整表格视图的大小到最后一行

Posted

技术标签:

【中文标题】快速调整表格视图的大小到最后一行【英文标题】:Resize a tableview to the last row in swift 【发布时间】:2017-02-19 20:05:40 【问题描述】:

我想在 android 中创建类似于自动完成文本视图的东西,这意味着覆盖视图中的 tableview 以显示搜索结果。为此,我制作了一个包含 tableview 的视图(需要显示特定背景)。这很好用,但是当 tableview 只有 1 行时,tableview 不会调整其高度。

我写

tableView.tableFooterView = UIView()

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

你能帮帮我吗?

【问题讨论】:

给我看你的屏幕 【参考方案1】:

您应该手动更新 tableView 的框架。 如果您使用自动布局,请为 tableView 的高度添加一个 IBOutlet:

@IBOutlet weak var heightConstraint: NSLayoutConstraint!

我假设 tableView 的高度受限于某个固定值。如果它取决于屏幕高度,只需将maxTableViewHeight 替换为计算变量即可。

let maxTableViewHeight = CGFloat(300)

创建一个更新tableView高度的方法。如果 tableView 的内容高度小于 maxHeight,它将确保调整大小:

func updateTableViewFrame() 
    autocompleteTableView.layoutIfNeeded() //to make sure you have updated contentSize
    let height = autocompleteTableView.contentSize.height
    heightConstraint.constant = min(height, maxTableViewHeight)
    view.layoutIfNeeded()

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

【讨论】:

感谢您的回答。我已经找到了一个类似的,但它并没有真正起作用,问题是确定重新加载后 tableview 的实际大小。 无论如何,我改变了做的方式并完全抑制了“自动完成文本视图”

以上是关于快速调整表格视图的大小到最后一行的主要内容,如果未能解决你的问题,请参考以下文章

如何快速调整表格视图标题的高度?

使用自动布局约束动态调整表格视图单元格的大小

ios在表格视图单元格中视觉调整图像大小

输入长文本时如何调整文本视图的大小?

使用固定大小的子视图和自动布局调整 UIView 的大小不起作用

具有固定大小视图和自动调整大小的表格视图的自动布局