altura padrão para cabeçalho de secção em UITableView
-
05-07-2019 - |
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
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];
}