Изменение размера табличного представления до последней строки в swift

#ios #swift #uitableview #resize #height

#iOS #swift #uitableview #изменение размера #высота

Вопрос:

Я хочу создать что-то вроде автозаполнения textview в Android, что означает tableview в виде наложения для отображения результата поиска. Для этого я создал представление (необходимое для отображения определенного фона), содержащее табличное представление. Это работает нормально, но когда tableview имеет только 1 строку, tableview не изменяет свою высоту.

Я пишу

 tableView.tableFooterView = UIView()
  

но это просто подавляет избыток разделителя, а не изменяет высоту.

Не могли бы вы мне помочь, пожалуйста?

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

Комментарии:

1. Покажите мне свой экран

Ответ №1:

Вы должны обновить фрейм TableView вручную. Если вы используете автозапуск, добавьте IBOutlet для высоты табличного представления:

 @IBOutlet weak var heightConstraint: NSLayoutConstraint!
  

Я предполагаю, что высота TableView ограничена некоторым фиксированным значением. Если это зависит от высоты экрана, просто замените maxTableViewHeight на вычисляемую переменную.

 let maxTableViewHeight = CGFloat(300)
  

Создайте метод для обновления высоты TableView. Это гарантирует, что TableView будет изменен, если его высота содержимого меньше maxHeight:

 func updateTableViewFrame() {
    autocompleteTableView.layoutIfNeeded() //to make sure you have updated contentSize
    let height = autocompleteTableView.contentSize.height
    heightConstraint.constant = min(height, maxTableViewHeight)
    view.layoutIfNeeded()
}
  

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

Комментарии:

1. Спасибо за ваш ответ. Я уже нашел похожий, но он на самом деле не работает, проблема заключалась в том, чтобы определить реальный размер tableview после перезагрузки.

2. В любом случае, я изменил способ выполнения и полностью подавил «автозаполнение текстового представления»