web-dev-qa-db-fra.com

Hauteur des vues d'en-tête pour UITableView groupé sur iOS7

Je construis mon écran de paramètres et j'utilise une vue sous forme de tableau groupé. En essayant de définir les en-têtes, je vois un espacement au-dessus de ma vue en-tête. J'ai vérifié deux fois et je passe la hauteur de vue correcte dans -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section.

Voici une capture d'écran de ce comportement: enter image description here

Vous pouvez voir ma vue avec le titre (VIBRATE, MODE SILENCIEUX), la couleur bg plus sombre et l’espace plus clair au-dessus.

16
Gal

Après de nombreuses recherches, j'ai finalement trouvé une solution à ce problème. Le délégué de la tableview doit implémenter heightForFooterInSection et renvoyer un très petit nombre. Si vous revenez 0 par défaut, le même espacement était à l'origine des espaces supplémentaires.

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return CGFLOAT_MIN;
}
73
Casey

Essaye ça:

- (void)viewWillAppear:(BOOL)animated{
    CGRect frame = self.tableView.tableHeaderView.frame;
    frame.size.height = 1;
    UIView *headerView = [[UIView alloc] initWithFrame:frame];
    [self.tableView setTableHeaderView:headerView];
}
5
Shekhar Gupta

C'est à peu près la même chose que la réponse de Casey, cependant, c'est un peu plus propre car il ne nécessite pas d'implémentation de méthode déléguée. Lorsque vous configurez votre vue sous forme de tableau, définissez simplement la propriété sectionFooterHeight sur 0. Elle remplit la même fonction avec moins de code (et sans DBL_MIN étrange).

tableView.sectionFooterHeight = 0.0;

3

Je suis sûr que ce n'est qu'un simple piratage. Mais un moyen facile de le faire est d’écrire cette fonction:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
      return 48.0f; // header height
}

personnaliser sa hauteur.

Je suis presque sûr qu'il y a d'autres façons de le faire que je ne connais pas.

1
monkeyMoo

Version Swift 2.2:

func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.min
}
0
Lucas Novaes

Il semble qu'Apple ait pris une décision consciente en matière de conception pour que les vues sous forme de tables groupées disposent d'espace supplémentaire. Essayez de régler le contentInset de la UITableView. Voir ma réponse ici

0
nvrtd frst