UITableView Автоматическое измерение не работает правильно

У меня есть таблица, которая заполняется данными из Firebase. Однако при изменении размера табличного представления с использованием автоматического измерения некоторый текст отображается обрезанным.

Вот мой Раскадровка с ограничениями, установленными сверху, снизу, справа и слева.

введите описание изображения здесь

Это работает нормально, когда нет много текста, как показано здесь.

введите описание изображения здесь

Однако, когда я заполняю ячейку большим количеством текста, это происходит.

введите описание изображения здесь

Вот код, который я сейчас использую.

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if (tableView == questInformationTableView) {
            return 50
        }
        else if (tableView == questWalkthroughTableView) {

            return UITableView.automaticDimension
        }

        return 0
    }
    override func viewDidLoad() {
          super.viewDidLoad()
          questWalkthroughTableView.estimatedRowHeight = 250
          questWalkthroughTableView.rowHeight = UITableView.automaticDimension
        }

    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
         return UITableView.automaticDimension
        }

Я также установил numberOfLines на 0 и установить метку.sizeToFit()

4 ответа

Не делайте нижнее ограничение больше или равным, просто установите его как верхнее ограничение. Забрать estimatedHeightForRowAt а также heightForRowAt функции. По вашему мнению загрузки объявлений достаточно. Когда вы перезагрузите данные, также позвоните self.view.layoutIfNeeded

Я обычно устанавливаю автоматическое измерение высоты, а затем делаю перезагрузку в viewDidLoad следующим образом

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.rowHeight = UITableViewAutomaticDimension
    tableView.estimatedRowHeight = 44

    tableView.reloadData()   
}

Предлагаем проверить

  1. автоматическая высота строки включена внутри ячейки таблицы

  2. проверьте, является ли метка расширяемой, и ее нижнее ограничение установлено на супервизор. Добавляем снимок экрана, показывающий список ограничений для образца ячейки, которую я использую с динамической высотой.

  1. Даже если это не решит вашу проблему, предложите сбросить все ограничения и снова установить их для своей ячейки.

Для аналогичной проблемы я удалил назначение tableView.estimatedRowHeight и оставил tableView.rowHeight = UITableView.automaticDimension, и все заработало. Однако проблема возникла только на iPad.

Другие вопросы по тегам