表格视图的自动高度

Posted

技术标签:

【中文标题】表格视图的自动高度【英文标题】:Automatic height for tableview 【发布时间】:2019-12-19 01:47:29 【问题描述】:

我请求你帮助创建一个具有自动高度的表格视图

我的目标是创建一个包含一些数据(如字符串)的 tableView。 但就我而言,我可以有 4、7 或 22 个字符串。所以,我的目标是列出所有字符串,而不是在这个 TableView 内滚动,而是在所有主滚动视图中滚动

我知道如何获得自动行单元格高度,但似乎我必须为我的 tableview 设置高度或底部约束,这不是我的目标。

如果您了解 CCS,目标是获得像“height: auto;”这样的渲染。就是这样。

希望能为我读到一些好消息。 谢谢

【问题讨论】:

【参考方案1】:

在情节提要中设置初始高度约束并将出口连接到它。获取 tableviews 数据并调用 self.tableView.reloadData() 后尝试:

self.tableViewHeightConstraint.constant = self.tableView.contentSize.height

【讨论】:

【参考方案2】:

将tableview包裹在UIScrollView内,然后设置tableview的高度并取tableview高度的出口,

@IBOutlet weak var heightOfTable: NSLayoutConstraint!

之后我们需要观察tableview每次变化的高度,为此在你的UIViewController中添加以下方法

override func viewWillAppear(_ animated: Bool) 
    super.viewWillAppear(animated)
    tableView.addObserver(self, forKeyPath: "contentSize", options: .new, context: nil)


override func viewWillDisappear(_ animated: Bool) 
    super.viewWillDisappear(animated)
    tableView.removeObserver(self, forKeyPath: "contentSize")


override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) 
    if keyPath == "contentSize" 
        heightOfTable.constant = min(tableView.contentSize.height, UIScreen.main.bounds.height * 0.6)
    

【讨论】:

感谢您的回答。我有内容的自动调整大小,但我的滚动视图不起作用。我在 tableView 下放置了一个固定高度的 uiview,并且我的表格视图已调整大小(更小)。【参考方案3】:

你必须在 heightForRow 事件中使用 UITableView.automaticDimension。您还必须在 viewDidLoad 中设置estimatedRowHeight。

在此之前,您必须设计您的表格视图单元格,而不对标签进行任何高度限制。 (我认为你正在使用标签。),你也必须给标签 lineCount 0。

当您完成所有这些时,就必须完成。如果你愿意,你可以分享你的代码,然后我可以帮助你。

【讨论】:

以上是关于表格视图的自动高度的主要内容,如果未能解决你的问题,请参考以下文章

使用自动布局表格视图时如何增加表格视图单元格中的标签高度(取决于文本)?

自动调整大小(动态高度)表格视图单元格的问题

使用最小高度单元格自动调整表格视图

iOS AutoLayout 自动调整整个表格(不是单元格!)高度

仅针对一种原型单元格的自动表格视图单元格高度

第一个单元格上的 iOS 8 自动表格视图高度错误