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

StackOverflow https://stackoverflow.com/questions/1200438

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

    return someDefaultHeight;
}

Спасибо

Это было полезно?

Решение

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

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

Другие советы

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

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

В общем, сделай свое дело :)

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

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

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

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

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

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

Для быстрой версии 4.2 вы должны вернуть UITableView.automaticDimension.

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

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return [tableView rowHeight];
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top