Высота заголовка для группировки UITableView на iOS7
Я создаю экран настроек и использую представление сгруппированной таблицы.
При попытке установить заголовки я вижу интервал над моим заголовком.
Я дважды проверял, и я передаю правильную высоту просмотра в -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
.
Вот скриншот этого поведения:
![enter image description here]()
Вы можете видеть мое представление с заголовком (VIBRATE, SILENT MODE) в нем, а затем более темным цветом bg и ярким пространством над ним.
Ответы
Ответ 1
После долгих поисков я наконец нашел исправление для этого. Делегату tableview необходимо реализовать heightForFooterInSection и вернуть очень небольшое число. Возврат 0 по умолчанию к тому же интервалу, который вызывал дополнительные пробелы.
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
Ответ 2
Попробуйте следующее:
- (void)viewWillAppear:(BOOL)animated{
CGRect frame = self.tableView.tableHeaderView.frame;
frame.size.height = 1;
UIView *headerView = [[UIView alloc] initWithFrame:frame];
[self.tableView setTableHeaderView:headerView];
}
Ответ 3
Это почти то же самое, что и ответ Кейси, однако он немного чище, так как он не требует применения метода делегата. Когда вы настраиваете представление в таблице, просто установите для свойства sectionFooterHeight
значение 0. Он выполняет ту же самую задачу с меньшим количеством кода (и нечетностью DBL_MIN
).
tableView.sectionFooterHeight = 0.0;
Ответ 4
Довольно уверен, что это просто взломать. Но простой способ сделать это - написать эту функцию:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 48.0f; // header height
}
чтобы настроить его высоту.
Довольно уверен, что есть другие способы сделать это, о которых я не знаю.
Ответ 5
Похоже, что Apple внесла сознательное дизайнерское решение, чтобы сгруппированные представления стола имели дополнительное пространство сверху. Попробуйте отрегулировать значение contentInset UITableView
. См. мой ответ здесь
Ответ 6
Версия Swift 2.2:
func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return CGFloat.min
}