it-swarm.com.ru

Высота просмотров заголовка для сгруппированного UITableView на iOS7

Я строю свой экран настроек и использую сгруппированное табличное представление . При попытке установить заголовки я вижу интервал над моим заголовочным представлением . Я дважды проверил, и я передаю правильную высоту представления в -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section.

Вот скриншот этого поведения: enter image description here

Вы можете видеть мой вид с заголовком (VIBRATE, SILENT MODE) в нем, и он более темного цвета и более светлое пространство над ним.

16
Gal

После долгих поисков я наконец нашел решение этой проблемы. Делегат табличного представления должен реализовать heightForFooterInSection и вернуть очень маленькое число. Возврат 0 по умолчанию к тому же интервалу, который вызывал дополнительные пробелы.

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}
73
Casey

Попробуй это:

- (void)viewWillAppear:(BOOL)animated{
    CGRect frame = self.tableView.tableHeaderView.frame;
    frame.size.height = 1;
    UIView *headerView = [[UIView alloc] initWithFrame:frame];
    [self.tableView setTableHeaderView:headerView];
}
5
Shekhar Gupta

Это почти то же самое, что и ответ Кейси, однако, он немного чище, поскольку не требует реализации метода делегата. Когда вы настраиваете табличное представление, просто установите для свойства sectionFooterHeight значение 0. Это достигается тем же путем с меньшим количеством кода (и без DBL_MIN странности). 

tableView.sectionFooterHeight = 0.0;

3
Michael DiStefano

Уверен, это простой взлом. Но простой способ сделать это - написать эту функцию: 

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
      return 48.0f; // header height
}

настроить его высоту.

Уверен, есть другие способы сделать это, о которых я не знаю.

1
monkeyMoo

Версия Swift 2.2:

func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.min
}
0
Lucas Novaes

Похоже, что Apple приняла осознанное дизайнерское решение, чтобы сгруппированные табличные представления имели дополнительное пространство сверху. Попробуйте настроить contentInset UITableView. Смотрите мой ответ здесь

0
nvrtd frst