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

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

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

    return someDefaultHeight;
}

Спасибо

Ответ 1

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

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return UITableViewAutomaticDimension;
}

Ответ 2

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

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

Ответ 3

Соблюдай трюк:)

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == 0)
        return kFirstSectionHeaderHeight;
    return [self sectionHeaderHeight];
}

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

    return [super tableView:tableView heightForHeaderInSection:section];
}

Ответ 7

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

Ответ 8

Это должно сделать трюк

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return [tableView rowHeight];
}