ios - swift 将表格 View 的大小调整到最后一行

标签 ios swift uitableview resize height

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

我写

tableView.tableFooterView = UIView()

但它只是抑制了分隔符的多余部分,并没有改变高度。

你能帮帮我吗?

enter image description here enter image description here

最佳答案

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

@IBOutlet weak var heightConstraint: NSLayoutConstraint!

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

let maxTableViewHeight = CGFloat(300)

创建一个方法来更新 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()
}

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

关于ios - swift 将表格 View 的大小调整到最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39974575/

相关文章:

ios - 能够从 Storyboard 和 ViewController 加载 xib

cocoa - 如何在 Swift 中使用文件系统事件 API?

ios - 如果先手动移动,则以编程方式移动 UITableViewCell 会失败

ios - Parse 的排序结果无法按预期使用 query.limit

ios - 如何使用过滤器删除特定事件?

iphone - 将字符串写入文件到 FTP Objective C?

ios - swift - 如何在一个 tabBarItem 的两个 View Controller 之间切换并自定义它?

css - TableView 单元格使用整个屏幕高度

ios - 钛create2DMatrix丑陋的改造结果

ios - 停止旋转通知传播到 subview