Высота ячеек таблицы не отображается
Я попытался жестко закодировать высоту строки в ячейке представления таблицы. После запуска программы она выглядит как одна строка. Я подозреваю, что это из-за высоты строки в виде таблицы.
Не могли бы вы рассказать мне, что здесь случилось?
Ответы
Ответ 1
В Xcode 9 просмотр tableview
автоматически создает оценочные ячейки на основе Autolayout
. Так как вы не предоставили автопоставку, вот почему вы получаете это.
Вам необходимо отключить приблизительный и автоматический размер ячейки, выбрав tableview и снимая флажки с двух вариантов:
Дайте значение, которое вы хотите, чтобы высота строки, и ячейка будет создана соответственно.
Надеюсь, это поможет.
Ответ 2
Добавьте этот код в свой UITableViewDelegate
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}
Ответ 3
Установите высоту строки, а также оценку высоты строки как Automatic в viewDidLoad()
как
table.rowHeight = UITableViewAutomaticDimension
table.estimatedRowHeight = UITableViewAutomaticDimension
В heightForRowAt:
задайте высоту как UITableViewAutomaticDimension
as
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
Примечание. Задайте количество строк long restaurant name
0".
Ответ 4
Обеспечьте следующие шаги, чтобы сделать автоматическое измерение эффективным для раскладки высоты ячеек/строк. (Вот пример кода для UILabel и как установить высоту содержимого для ячейки таблицы.)
- Назначить и реализовать dataSource и делегировать
- Назначить
UITableViewAutomaticDimension
для rowHeight & оценкамRowHeight - Внедрите методы delegate/dataSource (например,
heightForRowAt
и верните значение UITableViewAutomaticDimension
)
-
@IBOutlet weak var table: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Don't forget to set dataSource and delegate for table
table.dataSource = self
table.delegate = self
// Set automatic dimensions for row height
// Swift 4.2 onwards
table.rowHeight = UITableView.automaticDimension
table.estimatedRowHeight = UITableView.automaticDimension
// Swift 4.1 and below
table.rowHeight = UITableViewAutomaticDimension
table.estimatedRowHeight = UITableViewAutomaticDimension
}
// UITableViewAutomaticDimension calculates height of label contents/text
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
// Swift 4.2 onwards
return UITableView.automaticDimension
// Swift 4.1 and below
return UITableViewAutomaticDimension
}
Для экземпляра ярлыка в UITableviewCell
- Установить число строк = 0 (& режим разрыва строки = обрезать хвост)
- Задайте все ограничения (сверху, снизу, справа налево) относительно контейнера супервизора/ячейки.
- Необязательно: установите минимальную высоту для метки, если вы хотите, чтобы минимальная вертикальная область была покрыта меткой, даже если данных нет.
Ответ 5
Если вы хотите, чтобы клетки занимают пространство в соответствии с его содержанием, вы должны вернуться UITableViewAutomaticDimension в табличного методов делегата heightForRowAt: и estimatedHeightForRowAt:
Ответ 6
Следуя этому руководству, которое сработало для меня, вы должны добавить кучу ограничений, а затем высота строки рассчитывается автоматически.
Короче говоря, то, что я сделал: (добавление и изменение ограничений - это две крайние правые кнопки в правом нижнем углу представления раскадровки) Сначала я выбрал все представления в ячейке прототипа, удалил все ограничения (есть хорошая опция на самой правой кнопке), затем добавил все недостающие ограничения (еще один приятный вариант) и, наконец, я выбрал вторую кнопку справа и щелкнул все красные линии. Вы можете сделать это, одновременно выбирая все виды. И тогда это сработало.
Ответ 7
Вы можете сделать это вручную в своем табличном представлении:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}