Несмотря на то, что для всех элементов установлены ограничения, включая вертикальные, необходимые для вычисления высоты ячейки, автоматическая компоновка, похоже, игнорируется: все ячейки сжаты.
Вот скриншот результата и ограничений в раскадровке.
В VC, который содержит tableView, вот код в viewDidLoad:
tableView.estimatedRowHeight = 120.0
tableView.rowHeight = UITableViewAutomaticDimension
Закомментировав вторую строку, вы получите ячейки с высотой 120,0, но также игнорируется автоматическая раскладка.
Благодарность
Обновить
Чтобы упростить интерфейс, я оставил одну метку с ограничениями:
- Ведущее пространство для супервизора
- Верхнее пространство для просмотра
- Фиксированная ширина и высота (100 и 100)
- Нижнее пространство до края контейнера, чтобы убедиться, что ячейка имеет все вертикальные ограничения для определения ее высоты
И с этим упрощенным интерфейсом автоматическая компоновка по-прежнему не принимается во внимание, что намекает мне, что проблема возникла не из-за неправильно установленных ограничений.
В Инспекторе размеров высота строки установлена на 120 и отмечен флажок «Пользовательский». Ячейка имеет правильный настраиваемый класс, идентификатор повторного использования ячейки правильный.
Обновление: найдено решение
Это была простая ошибка, см. Мой ответ ниже.
источник
Ответы:
Автоматическая компоновка была проигнорирована, потому что как ячейке прототипа, так и UIView ячейки был задан пользовательский класс ячейки в IB.
Установка UIView обратно в класс UIView решила проблему.
источник
Я думаю, проблема в том, что вы реализуете:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return x }
Вам необходимо удалить эту функцию, чтобы tableview вычислял ее автоматическую высоту для ячеек.
источник