У меня есть представление (позже, называемое пользовательским представлением), которое отображает внутри него подпредставления. После их рендеринга я получаю новое требуемое значение высоты (чтобы все подпредставления были видны) и пытаюсь обновить высоту вида. Вот код, вызываемый из awakeFromNib()
метода подкласса UITableViewCell
(Примечание: в приведенном ниже коде используется ReactiveSwift
):
customView.model.requiredHeight.producer
.observe(on: UIScheduler())
.skipNil()
.skipRepeats()
.startWithValues { [weak self] in
print("increased Height: ", $0)
self?.customViewHeightConstraint.constant += $0
print("customView height: ", self?.customView.frame)
}
Итак, правильная высота, которая будет добавлена кограничение захватывается, и первый оператор печати подтверждает это. Однако это не меняет вид. Последнее выражение print показывает, что даже если я добавлю значение к ограничению высоты представления, его кадр будет таким же.
Я должен отметить, что это так называемое пользовательское представление находится внутри строки UITableView
. Вот схема (зеленый прямоугольник - это ячейка, желтый - UILabel
, а красный - вид):
Итак, все прижато к краям. Я использую автоматическую высоту строки для строки (однако без разницы, если я установил ее на пользовательский) и в методе делегата табличного представления tableView(_:estimatedHeightForRowAt:)
возвращает UITableView.automaticDimension
в качестве расчетной высоты.
Я уверен, что япропустить что-то очевидное, но не могу понять, честно. Этот метод отлично работает, если пользовательское представление не находится внутри ячейки, поэтому, я думаю, это как-то связано с ячейкой табличного представления.