#swift #uitableview #height #swift3 #contentsize
#быстрый #uitableview #высота #swift3 #размер содержимого
Вопрос:
У меня есть эта таблица, для которой я хочу определенную высоту, даже если у меня есть только одна строка. Я хочу сделать его прокручиваемым (пустое пространство внизу), даже если у меня недостаточно строк, чтобы покрыть весь экран.
Я думаю, что я должен работать с:
tableView.contentSize.height = 2000
Но либо я не знаю, куда мне ее поместить (должен ли я повторно загрузить данные для таблицы после?), Либо у меня неправильное представление о том, как это сделать.
Кто-нибудь может помочь?
РЕДАКТИРОВАТЬ: у меня есть это представление внутри табличного представления, которое в некоторых случаях может быть выше таблицы, и в этом случае я не могу прокрутить все это. Вот почему мне нужно изменить высоту прокрутки таблицы.
На iOS 10 это работает так, как задумано, но я должен исправить это и для iOS 8 и 9.
Ответ №1:
Это было протестировано и работает:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
tableView.contentSize.height = 2000
}
Комментарии:
1. Что, если мне нужно это сделать, когда что-то меняется после загрузки экрана, например, когда пользователь нажимает кнопку?
2. Вы можете просто вызвать
tableView.contentSize.height = 2000
. Вам не нужно вызыватьreloadData()
, если данные фактически не изменились. В этом случае вы хотели бы вызватьreloadData()
, а затем установитьcontentSize
.3. Не работает на iOS 9, когда в табличном представлении нет строк… Есть еще идеи?
4. @asheyla это очень странно. Я тестировал на устройстве под управлением iOS 9, и оно работает нормально. Он также отлично работает с симулятором. Можете ли вы опубликовать больше о своей реализации? Я обновил свой ответ примером.
5. спасибо, что нашли время, чтобы показать мне пример. Я подумал, что TableView.tableFooterView = UIView() может быть причиной того, что ваше решение не работает для меня, поэтому я удалил его, и все равно оно работает не так, как предполагалось. Я вижу, вы объявили reloadContent() . Вы вызываете это где-нибудь?
Ответ №2:
Только в этот час ночью я понял, что работает. Я не могу установить высоту размера содержимого напрямую, но вот так:
tableView.reloadData()
tableView.layoutIfNeeded()
var contentSizeTemp = tableView.contentSize
contentSizeTemp.height = menuViewHeight.constant
tableView.contentSize = contentSizeTemp
Ответ №3:
Как насчет установки ограничений для представления таблицы? Или это другой случай, когда они не подходят? В этом случае таблица будет иметь высоту, равную высоте экрана, независимо от того, сколько в ней строк.
Комментарии:
1. Я отредактировал свой вопрос, надеюсь, теперь он дает больше объяснений. Меня интересует высота прокрутки, высота таблицы в порядке, она находится там, где должна, и занимает столько экрана, сколько мне нужно.