iOS:在Swift中动态设置UITableView高度

我们的UITableView存在于ViewController(而不是TableViewController)上。 我们在运行时用两行填充它。 当我们设置高度约束时,表格显示正常。 当我们没有设置高度约束时,表格完全不会出现。 如何设置UITableView动态设置其高度?

我已经看到了关于动态设置行高(这确实很好)的线程,但没有关于实际的表高度。 在这一点上有几个主题,但似乎没有一个对我有用。


更新解决方案 :正如Robotic Cat建议我们在Storyboard中的UITableView上设置一个高度约束(我们已经有了),然后按住Ctrl键在我们的控制器中创建一个IBOutlet 。 从那里我们按照Vignesh的回答在viewWillAppear执行了以下代码:

 tableViewHeightConstraint.constant = tableView.contentSize.height 

注意在执行上面的代码之前,我们在相同的方法中调用reloadData()来填充我们的表。

我们没有UITableView的自动维度,它们只影响UITableViewCell高度。 如果要动态设置表视图高度,我认为最好的方法是在表视图完成加载后将表视图高度约束设置为等于其内容大小。 我的意思是,像

 tableViewHeightConstraint.constant = tableView.contentSize.height 

您可以通过多种方式更改tableView框架,包括动画等。

 tableView.frame = CGRect(x: leftTableBorder, y: topTableBorder, width: tableWidth, height: tableHeight) 

或者,您可以更改与tableView相关的约束,然后使用layoutIfNeeded更新约束,如果您愿意,也可以设置动画。

例如,如果您有高度约束属性:

 tableViewHeightConstraint.constant = desiredHeight layoutIfNeeded() 

在任何情况下,都需要约束,因此autolayout知道如何呈现表。