Я не могу установить для UITableViewcell динамическую высоту.
У меня есть пользовательский xib и структура, как показано ниже, и я уже добавляю ограничение на начало, конец и верхнюю часть стека к своему суперпредставлению
class fieldView: UIView {
let kCONTENT_XIB_NAME = "form_field_view"
@IBOutlet weak var contectView: UIView!
@IBOutlet weak var fieldDesc: UILabel!
@IBOutlet weak var fieldInput: customTextField!
var required: Bool?
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
func commonInit() {
Bundle.main.loadNibNamed(kCONTENT_XIB_NAME, owner: self, options: nil)
addSubview(contectView)
contectView.frame = self.bounds
contectView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
fieldInput.isScrollEnabled = false
}
}
В tableView cellForRowAt я создаю пользовательское представление и добавляю его в каждый UITableViewCell
cell.contentView.addSubview(fieldView)
NSLayoutConstraint(item: fieldView, attribute: NSLayoutConstraint.Attribute.leading, relatedBy: NSLayoutConstraint.Relation.equal, toItem: cell.contentView, attribute: NSLayoutConstraint.Attribute.leadingMargin, multiplier: 1.0, constant: 10.0).isActive = true
NSLayoutConstraint(item: fieldView, attribute: NSLayoutConstraint.Attribute.trailing, relatedBy: NSLayoutConstraint.Relation.equal, toItem: cell.contentView, attribute: NSLayoutConstraint.Attribute.trailingMargin, multiplier: 1.0, constant: 100.0).isActive = true
NSLayoutConstraint(item: fieldView, attribute: NSLayoutConstraint.Attribute.top, relatedBy: NSLayoutConstraint.Relation.equal, toItem: cell.contentView, attribute: NSLayoutConstraint.Attribute.topMargin, multiplier: 1.0, constant: 0.0).isActive = true
NSLayoutConstraint(item: fieldView, attribute: NSLayoutConstraint.Attribute.bottom, relatedBy: NSLayoutConstraint.Relation.equal, toItem: cell.contentView, attribute: NSLayoutConstraint.Attribute.bottomMargin, multiplier: 1.0, constant: 0.0).isActive = true
return cell
для tableView
override func viewDidLoad() {
super.viewDidLoad()
fieldTable.rowHeight = UITableView.automaticDimension
fieldTable.estimatedRowHeight = 200.0
}
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if (expanded) {
return (UITableView.automaticDimension)
}else{
return 0
}
}
Однако фактический результат, как это
Я думаю, что UIStackView изменил свою высоту, но его суперпредставление не изменилось, что также не изменяет ячейку tableview
Как я могу это исправить?