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()
}
Предлагаем проверить
автоматическая высота строки включена внутри ячейки таблицы
проверьте, является ли метка расширяемой, и ее нижнее ограничение установлено на супервизор. Добавляем снимок экрана, показывающий список ограничений для образца ячейки, которую я использую с динамической высотой.
- Даже если это не решит вашу проблему, предложите сбросить все ограничения и снова установить их для своей ячейки.
Для аналогичной проблемы я удалил назначение tableView.estimatedRowHeight и оставил tableView.rowHeight = UITableView.automaticDimension, и все заработало. Однако проблема возникла только на iPad.