Высота заголовка для группировки 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
}