Привет! Я сделал нечто очень похожее на это, и, надеюсь, это поможет.
final class SignInVC: UIViewController {
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var tableViewHeight: NSLayoutConstraint!
// Whatever max height you are after
private let maxTableViewHeight = 500
// Whatever height you are after
private let rowHeight = 90
// Just using string array for example but use your own array here
private var fields: [String] = []
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
setTableViewHeight()
}
private func setTableViewHeight() {
var newHeight = fields.count * rowHeight
if newHeight > maxTableViewHeight {
newHeight = maxTableViewHeight
}
tableViewHeight.constant = newHeight
}
@IBAction func addField(_ sender: Any) {
fields.append("Test")
setTableViewHeight()
tableView.reloadData()
}
}
extension SignInVC: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return fields.count
}
// Rest of your datasource/delegate below...
// I am assuming you have your own already
}
Надеюсь, это поможет:)