Добавить пустое (пустое) пространство под (в конце) UITableView

Мое приложение имеет UITableView, который имеет переменное количество клеток внутри. Как я могу добавить пустое (пустое) пространство с определенной высотой под UITableView? Или в самом конце UITableView? Так что после самой последней ячейки будет больше свободного места.

Ответ 1

Сделайте вкладку содержимого в виде таблицы:

let insets = UIEdgeInsets(top: 0, left: 0, bottom: 100, right: 0)
self.tableView.contentInset = insets

После того, как вы перейдете к последней ячейке, вы оставите пустое пространство под табличным представлением.

Ответ 2

Вы можете использовать tableView Footer для этого

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 100)];
[self.tableView setTableFooterView:view];

Ответ 3

2019. Честно говоря, это просто:

добавьте следующее в viewDidLoad

tableView.contentInset.bottom = 100

На самом деле, все, что нужно сделать.

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.contentInset.bottom = 100
}

Ответ 4

Честно говоря, я не люблю слишком много возиться со вставками (особенно, если вы уже модифицируете их по другим причинам).

Решение, которое я нашел, состояло в том, чтобы переопределить tableView(_:heightForFooterInSection:) и вернуть желаемую высоту пространства для последнего раздела tableView:

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    if section == lastSectionIndex {
        return 30.0
    }
    return 0.001
}

Последнее значение 0.001 относится ко всем другим разделам, которые, в моем случае, не имеют нижнего колонтитула; таким образом, нижний колонтитул в других разделах отсутствует. Нет необходимости создавать дополнительные представления.

Ответ 5

Будьте осторожны с программной прокруткой и определением нижнего пробела:

Стоит учесть одну вещь: если вам случится использовать программную прокрутку к определенной ячейке в вашем tableView. Затем вам нужно добавить достаточное количество нижнего пространства, чтобы избежать уродливого эффекта scrolling-and-not-having-enough-bottom-space-causing-up-and-down-jumping-of-your-cells effect (т.е. На самом деле все зависит на вашем коде прокрутки - я просто хотел упомянуть об этом).

Так что на самом деле было бы неплохо сделать ваше дополнительное пространство кратным вашему cellHeight (и если программная прокрутка добавит правильное значение, кратное вашему cellHeight как дополнительное пространство)...

Уже упомянутые решения короче моего решения. Но если вам нужна дополнительная настройка вашего нижнего пробела и если вам не нужен tableView-footerView для других целей, вы также можете использовать footerView для создания дополнительного нижнего пробела и выполнить:

let rowHeight = 70  // or whatever...
let nrOfCellHeightsSpaces = 6  // or whatever.. (consider scrolling !)
let heightDependentSpace = nrOfCellHeightsSpaces * rowHeight
let customViewFooter = UIView(frame: CGRect(x: 0, y: 0, width: tableView.bounds.width, height: heightDependentSpace))
customViewFooter.backgroundColor = .clear  // or whatever color
// add whatever customization of your extra bottom-space
// (such as copyrights, decent logos, product information, etc, etc)
tableView.tableFooterView = customViewFooter

Ответ 6

Просто добавьте чистое чистое представление внизу таблицы в раскадровке.

Ответ 7

Спасибо @Siklab.ph для меня лучший ответ.

self.tableView.contentInset.bottom = 100

Ответ 8

У меня возникли некоторые проблемы при использовании footerView при его использовании вместе с разделами раньше, так что вот еще один подход, который работал у меня, вы также можете попробовать создать пользовательский cell, который является всего лишь emptyView и показывать что именно cell в последнем индексе.

В numberOfRowsInSection просто сделайте общее количество строк больше, чем общее количество строк, которые вы хотите показать.

И в cellForRowAtIndexPath вы можете сделать что-то вроде:

if(indexPath.row == size + 1){
     //show custom cell
}