Высота Swift-UITableViewCell в соответствии с ограничением макета UITextView

В моей ячейке представления таблицы находятся 3 объекта: imageview, label и textview.

Так я настраиваю textView и его ограничения:

textView.translatesAutoresizingMaskIntoConstraints = false
textView.textColor = UIColor.blue
textView.font = UIFont.systemFont(ofSize:15.0)
textView.textAlignment = NSTextAlignment.left
textView.isScrollEnabled = false

** обратите selfUIViewвнимание, что содержит textView. Представление содержимого ячейки табличного представления будет содержать это UIView

self.addConstraints([
            textView.topAnchor.constraint(equalTo: label.bottomAnchor, constant: 10.0),
            textView.leftAnchor.constraint(equalTo: imageView.rightAnchor, constant: 10.0),
            textView.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -10.0),
            textView.heightAnchor.constraint(greaterThanOrEqualToConstant: 20.0)
            ])

Я сделал isScrollEnabled = falseтак, что высота textView вычисляется в соответствии с его содержанием

Для моего UITableView я сделал это:

tableView.estimatedRowHeight = 44.0
tableView.rowHeight = UITableViewAutomaticDimension

С вышеуказанным кодом my tableviewcell не показывает правильную высоту. Я считаю его, потому что мое ограничение высоты textview дает представление содержимого tableviewcell неправильной высоты.

Как это исправить?

2 ответа

    1. Настройка isScrollEnabled = falseне влияет на вычисление высоты textView.
    2. Чтобы изменить размер ячейки в соответствии с содержимым textView, необходимо добавить ограничение bottom(=) textViewв дополнение к top(=) и необязательной height(>=)> .
  1. Вы пробовали использовать tableView(heightForRowAt:)метод делегата?

    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
       return textView.frame.height // Assuming you have a reference to the textview
    }