Я попытался жестко закодировать высоту строки в ячейке представления таблицы. После запуска программы она выглядит как одна строка. Я подозреваю, что это из-за высоты строки в виде таблицы.
Не могли бы вы рассказать мне, что здесь случилось?
Я попытался жестко закодировать высоту строки в ячейке представления таблицы. После запуска программы она выглядит как одна строка. Я подозреваю, что это из-за высоты строки в виде таблицы.
Не могли бы вы рассказать мне, что здесь случилось?
В Xcode 9 просмотр tableview
автоматически создает оценочные ячейки на основе Autolayout
. Так как вы не предоставили автопоставку, вот почему вы получаете это.
Вам необходимо отключить приблизительный и автоматический размер ячейки, выбрав tableview и снимая флажки с двух вариантов:
Дайте значение, которое вы хотите, чтобы высота строки, и ячейка будет создана соответственно.
Надеюсь, это поможет.
Добавьте этот код в свой UITableViewDelegate
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}
Установите высоту строки, а также оценку высоты строки как 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".
Обеспечьте следующие шаги, чтобы сделать автоматическое измерение эффективным для раскладки высоты ячеек/строк. (Вот пример кода для UILabel и как установить высоту содержимого для ячейки таблицы.)
UITableViewAutomaticDimension
для rowHeight & оценкамRowHeightheightForRowAt
и верните значение 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
Если вы хотите, чтобы клетки занимают пространство в соответствии с его содержанием, вы должны вернуться UITableViewAutomaticDimension в табличного методов делегата heightForRowAt: и estimatedHeightForRowAt:
Следуя этому руководству, которое сработало для меня, вы должны добавить кучу ограничений, а затем высота строки рассчитывается автоматически.
Короче говоря, то, что я сделал: (добавление и изменение ограничений - это две крайние правые кнопки в правом нижнем углу представления раскадровки) Сначала я выбрал все представления в ячейке прототипа, удалил все ограничения (есть хорошая опция на самой правой кнопке), затем добавил все недостающие ограничения (еще один приятный вариант) и, наконец, я выбрал вторую кнопку справа и щелкнул все красные линии. Вы можете сделать это, одновременно выбирая все виды. И тогда это сработало.
Вы можете сделать это вручную в своем табличном представлении:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}