Pergunta

Eu quero definir a altura do primeiro cabeçalho no meu UITableView. Para os outros cabeçalhos eu quero que eles continuam a altura padrão. Que valor / constante que eu possa colocar no lugar de "someDefaultHeight" no código abaixo?

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

    return someDefaultHeight;
}

Graças

Foi útil?

Solução

Em IOS 5.0 em diante você pode retornar UITableViewAutomaticDimension na maioria dos métodos de delegado. Sua na parte inferior da página de documentação

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

Outras dicas

A partir de verificar os padrões em meu aplicativo parece que para uma tabela agrupada o padrão é uma altura de 22 e para uma tabela não-agrupadas o padrão é uma altura de 10.

Se você verificar o valor do sectionHeaderHeight propriedade em seu tableview que deve dizer-lhe.

Na verdade, fazer o truque:)

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

Por uma questão de exaustividade: em iOS7 + a altura para cabeçalhos de seção estilo agrupados é 55.5 para o primeiro e 38 para seguir cabeçalhos. (Medido com DCIntrospect)

Eu não tenho certeza do que a resposta correta é aqui, mas nem 10 ou 22 parece ser a altura correta para uma vista de tabela agrupados em iOS 5. Eu estou usando 44, baseado em this questão, e, pelo menos, parece mais ou menos a altura correta.

Para obter a altura padrão, basta deixar alça super-lo:

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

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

para SWIFT 4.2 que você deve retornar UITableView.automaticDimension

Isso deve fazer o truque

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return [tableView rowHeight];
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top