表格视图的自动高度
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。
当您完成所有这些时,就必须完成。如果你愿意,你可以分享你的代码,然后我可以帮助你。
【讨论】:
以上是关于表格视图的自动高度的主要内容,如果未能解决你的问题,请参考以下文章
使用自动布局表格视图时如何增加表格视图单元格中的标签高度(取决于文本)?