web-dev-qa-db-fra.com

Réduction de l'espace entre les sections de UITableView

Existe-t-il un moyen de réduire l'espace entre deux sections d'un UITableView? Il y a environ 15 pixels entre chaque section que j'ai. J'ai déjà essayé de renvoyer 0 pour -tableView:heightForFooterInSection: et -tableView:heightForHeaderInSection: mais cela ne change rien.

Aucune suggestion?

132
flohei

C'était un peu délicat, mais essayez ce code:

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

    return 1.0;
}

- (CGFloat)tableView:(UITableView*)tableView 
           heightForFooterInSection:(NSInteger)section {
    return 5.0;
}

- (UIView*)tableView:(UITableView*)tableView 
           viewForHeaderInSection:(NSInteger)section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}

- (UIView*)tableView:(UITableView*)tableView 
           viewForFooterInSection:(NSInteger)section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}

Changez les valeurs en conséquence. Pour supprimer cet espace, je pense que 0.0 ne sera pas accepté. La plus petite valeur raisonnable semble être 1.0.

255
Tomen

Pour tous ceux qui veulent réduire la distance à 0, vous devez utiliser:

tableView.sectionHeaderHeight = 0.0;
tableView.sectionFooterHeight = 0.0;

Parce que la desserte de UITableViewDelegate crée uniquement un effet à partir de flottants supérieurs à zéro.

-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section
{
    return 1.0;
}


-(CGFloat)tableView:(UITableView*)tableView heightForFooterInSection:(NSInteger)section
{
    return 1.0;
}

-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
{
    return [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
}

-(UIView*)tableView:(UITableView*)tableView viewForFooterInSection:(NSInteger)section
{
    return [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
}

(utilisant iOS 4.1 avec XCode 4.0.2) 

132
Martin Stolz

Vous pouvez en réalité définir les hauteurs de pied de page, d'en-tête et de cellule dans Interface Builder sous l'onglet Taille. Par défaut, l'en-tête/le pied de page est défini sur 10.0.

33
Chris

Vous devez réduire la hauteur de l'en-tête et du pied de section. Ensuite, l'espace entre les sections sera réduit.

essayez ce code

Ça marche pour moi :-)

tableView.sectionHeaderHeight = 2.0;
tableView.sectionFooterHeight = 2.0;
25
Jirune

Vous pouvez également réduire la hauteur du pied de section et de l'en-tête du storyboard. Dans la vue de table -> inspecteur de taille. Aller à la hauteur de la section.

Size inspector for UITableView in storyboard.

Par défaut, il est défini sur 22 pour une table de style brut et sur 10 pour une table de style groupée. Vous pouvez configurer des valeurs en augmentant/diminuant les valeurs pour l'en-tête et le pied de page séparément. 

19
iosCurator

Pour moi, le problème était dû au fait que j'utilisais un style de vue de table groupée (UITableViewStyleGrouped). Quand je l'ai changé en style simple (UITableViewStylePlain), ma méthode tableView:heightForHeaderInSection: était la seule chose qui déterminait la taille de chaque en-tête de section.

4
Liron Yahdav

MISE À JOUR POUR iOS7: / En raison de la mise à jour automatique d'ARC, voici le code @Martin Stolz modifié.

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

-(CGFloat)tableView:(UITableView*)tableView heightForFooterInSection:(NSInteger)section
{
    return 5.0;
}

-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
{
    return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}

-(UIView*)tableView:(UITableView*)tableView viewForFooterInSection:(NSInteger)section
{
    return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}

(Utiliser iOS7, Xcode v5.0)

3
Chisx

Utilisez ceci peut-être, 0 ne fonctionnera pas comme prévu 

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
     return .leastNormalMagnitude
}

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return .leastNormalMagnitude
}
0
stan

Pour moi, ce problème a été résolu en utilisant simplement le code suivant,

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return section == 0 ? 1 : 20 // 20 is my other sections height
}

Retourner 1 pour la première section a résolu le problème.

0
Bharath