Question

Je souhaite définir la hauteur du premier en-tête de mon UITableView. Pour les autres en-têtes, je veux qu’ils restent à la hauteur par défaut. Quelle valeur / constante puis-je mettre à la place de "someDefaultHeight"? dans le code ci-dessous?

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

    return someDefaultHeight;
}

Merci

Était-ce utile?

La solution

À partir d’IOS 5.0, vous pouvez renvoyer UITableViewAutomaticDimension dans la plupart des méthodes de délégation. C'est en bas de la page de documentation

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

Autres conseils

En vérifiant les valeurs par défaut dans mon application, il semble que, pour une table groupée, la valeur par défaut soit 22 et que pour une table non groupée, la valeur par défaut soit 10.

Si vous vérifiez la valeur de la propriété sectionHeaderHeight sur votre tableview, cela devrait vous indiquer.

En fait, faites le tour:)

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

Par souci d’exhaustivité: sous iOS7 +, la hauteur des en-têtes de section de style groupés est 55.5 pour le premier et 38 pour les en-têtes suivants. (mesuré avec DCIntrospect)

Je ne sais pas quelle est la bonne réponse, mais ni 10 ni 22 ne semblent correspondre à la hauteur correcte pour une vue de table groupée sous iOS 5. J'utilise 44, sur la base de cette question, et elle semble au moins être à peu près à la bonne hauteur.

Pour obtenir la hauteur par défaut, laissez simplement super le gérer:

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

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

Pour swift 4.2, vous devez renvoyer UITableView.automaticDimension

Cela devrait faire l'affaire.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return [tableView rowHeight];
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top