自动检视高度

时间:2019-12-19 01:47:29

标签: swift uitableview autolayout tableview

我正在请求您帮助创建具有自动高度的表格视图

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

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

如果您知道CCS,则目标是具有“ height:auto;”之类的渲染。就是这样。

希望给我读一些好消息。 谢谢

3 个答案:

答案 0 :(得分:0)

在情节提要中设置初始高度限制,并将插座连接到情节提要。在获取表视图数据并调用self.tableView.reloadData()之后,尝试:

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

答案 1 :(得分:0)

对于在UIScrollView内包裹表格视图,然后设置表格视图的高度并获取表格视图高度的出口,

@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)
    }
}

答案 2 :(得分:0)

您必须在heightForRow事件中使用UITableView.automaticDimension。另外,您还必须在viewDidLoad中设置estimateRowHeight。

在此之前,您必须设计表格视图单元,而对标签不施加任何高度限制。 (我认为您正在使用标签。),还必须将标签的lineCount设置为0。

完成所有这些操作后,必须完成。如果您愿意,可以共享您的代码,然后我可以为您提供帮助。