Высота по умолчанию для заголовка раздела в UITableView - PullRequest
121 голосов
/ 29 июля 2009

Я хочу установить высоту первого заголовка в моем UITableView. Для других заголовков я хочу, чтобы они оставались по умолчанию. Какое значение / константу я могу поставить вместо "someDefaultHeight" в приведенном ниже коде?

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return kFirstHeaderHeight;

    return someDefaultHeight;
}

Спасибо

Ответы [ 8 ]

200 голосов
/ 18 января 2013

В IOS 5.0 и более поздних версиях вы можете возвращать UITableViewAutomaticDimension в большинстве методов делегатов. Это внизу страницы документации

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return UITableViewAutomaticDimension;
}
49 голосов
/ 29 июля 2009

При проверке значений по умолчанию в моем приложении похоже, что для сгруппированной таблицы по умолчанию установлена ​​высота 22, а для не сгруппированной таблицы по умолчанию установлена ​​высота 10.

Если вы проверяете значение свойства sectionHeaderHeight в табличном представлении, которое должно сообщить вам.

25 голосов
/ 19 мая 2011

На самом деле сделать трюк:)

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == 0)
        return kFirstSectionHeaderHeight;
    return [self sectionHeaderHeight];
}
6 голосов
/ 28 мая 2015

Для полноты: в iOS7 + высота для заголовков секций сгруппированных стилей составляет 55.5 для первого и 38 для следующих заголовков. (измерено с помощью DCIntrospect)

2 голосов
/ 09 января 2019

Для swift 4.2 вы должны вернуть UITableView.automaticDimension

2 голосов
/ 02 октября 2015

Чтобы получить высоту по умолчанию, просто позвольте super обработать ее:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return kFirstHeaderHeight;

    return [super tableView:tableView heightForHeaderInSection:section];
}
2 голосов
/ 14 марта 2012

Я не уверен, что правильный ответ здесь, но ни 10, ни 22 не кажутся правильной высотой для сгруппированного табличного представления в iOS 5. Я использую 44, основываясь на this вопрос, и он, по крайней мере, кажется примерно правильной высоты.

0 голосов
/ 07 января 2010

Это должно сработать

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return [tableView rowHeight];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...