У меня есть несколько таблиц (сгруппированных стилей) в моем приложении для iPhone (только на части экрана и добавлено с Interface Builder
, а не в подклассах UITableViewController
), которые в 80% случаев малы и помещаются на экране. Когда таблица уместится на экране, я бы хотел отключить прокрутку, чтобы она стала чище. Но если таблица исчезает с экрана (когда к ней добавляются строки), я бы хотел снова включить прокрутку (потому что в противном случае вы не сможете увидеть этот контент).
Есть ли способ сделать это? Я не могу понять это. Я знаю, чтобы сделать:
tableView.scrollEnabled = NO;
но я не уверен, где, или если мне нужно рассчитать размер объекта таблицы или что-то еще, чтобы заставить это работать.
Обновление : вот решение, которое, наконец, сработало для меня:
if (table.contentSize.height < table.frame.size.height) {
table.scrollEnabled = NO;
}
else {
table.scrollEnabled = YES;
}
Я запускаю этот код после вызова reloadData
таблицы, и он вычисляет правильные размеры и, кажется, работает.
table.frame.size.height
это фактический размер объекта (вы можете видеть это на Interface Builder
рисунке), отображаемый на экране, тогда как table.contentSize.height
это высота: верхний и нижний колонтитулы, а также высота каждой ячейки, добавленной вместе.
источник
Ответы:
Я думаю, что вы хотите установить
источник
interface builder
, сняв отметки отказов и отказов по горизонтали / вертикали.Вы можете проверить количество видимых ячеек, используя эту функцию:
Этот метод возвращает массив с видимыми ячейками, поэтому вы можете подсчитать количество объектов в этом массиве и сравнить с количеством объектов в вашей таблице ... если оно равно .. вы можете отключить прокрутку, используя:
Как уже упоминалось @ Джинни .. у нас могут быть проблемы с частично видимыми ячейками, поэтому это решение работает лучше в этом случае:
В случае, если вы используете autoLayout, это решение делает работу:
источник
if (table.contentSize.height < table.frame.size.height)
>> см. Редактирование в оригинальном сообщении.В Свифте:
источник
Таким образом, есть несколько ответов и требуется все содержимое одновременно, поэтому я добавляю этот ответ:
Если вы используете AutoLayout, установка этого параметра должна работать только для вас:
tableView.alwaysBounceVertical = false
Просто найдите эту опцию и опцию
untick
"Bounce Vertically
".Вот ссылка:
Если вы не используете AutoLayout:
источник
попробуй это
источник
Вы можете включить или отключить отскок или прокрутку таблицы, выбрав / отменив выбор в области просмотра прокрутки.
источник
Вы можете редактировать это в вашей раскадровке (если вы используете один). Под табличным представлением есть флажок «Прокрутка включена». Снимите флажок, и все готово.
источник
// Enable scrolling based on content height self.tableView.scrollEnabled = table.contentSize.height > table.frame.size.height;
источник
Высота ячейки по умолчанию составляет 44.0f для ячейки табличного представления, я считаю. Вы должны иметь свой источник данных в руках в массиве? Затем просто проверьте,
[array count]*44.0f
выходит ли за границы кадра и, если это такtableview.scrollEnabled = NO
, установите его в YES. Сделайте это там, где вы определите источник данных для этого конкретного табличного представления.источник