Je veux 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
Dans IOS 5.0, vous pouvez renvoyer UITableViewAutomaticDimension dans la plupart des méthodes de délégation. C’est au bas de la page de documentation.
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if(section == CUSTOM_SECTION)
{
return CUSTOM_VALUE;
}
return UITableViewAutomaticDimension;
}
En vérifiant les valeurs par défaut dans mon application, il semble que pour une table groupée, la hauteur par défaut soit 22 et que pour une table non groupée, la hauteur par défaut soit 10.
Si vous vérifiez la valeur de la propriété sectionHeaderHeight sur votre tableview, cela devrait vous indiquer.
Fait le truc :)
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if(section == 0)
return kFirstSectionHeaderHeight;
return [self sectionHeaderHeight];
}
Par souci d’exhaustivité: dans 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)
Pour Swift 4.2, vous devez renvoyer UITableView.automaticDimension
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];
}
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 this question, et il semble au moins à peu près à la bonne hauteur.