web-dev-qa-db-fra.com

Comment supprimer l'espace d'en-tête et de pied de page d'un UITableView?

J'ai un UITableView dans le style groupé, et une seule section. Cependant, il y a un espace vide au-dessus et en dessous de la vue de table qui est affiché lorsque l'utilisateur fait défiler trop. Comment puis-je supprimer cet espace?

20
cgossain

Pour ce faire, modifiez la propriété contentInset dont la vue table hérite de UIScrollView.

self.tableView.contentInset = UIEdgeInsetsMake(-20, 0, -20, 0);

Cela fera le haut et le bas toucher le bord.

58
Deepak Danduprolu

Ajoutez ce code:

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

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return 0;
}
3
Mohammad Anini

En fait, cette question a répondu à ma question.

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

1
cgossain

Décochez Étendre les bords sous la barre supérieure.

 enter image description here

0
Abo3atef

Cette réponse arrive assez tard, mais j'espère que cela aidera quelqu'un.

L'espace existe à cause de la propriété UITableView de tableHeaderView's. Lorsque la propriété tableHeaderView est nil, Apple affiche par défaut une vue. La solution consiste donc à créer une vue vide avec une hauteur supérieure à 0. La définition de cette option remplace la vue par défaut, supprimant ainsi l’espace indésirable.

Cela peut être fait dans un Storyboard en faisant glisser une vue vers le haut d'une tableView, puis en définissant la hauteur de la vue sur une valeur de 1 ou supérieure.

Ou cela peut être fait par programme avec le code suivant:

Objective-C:

CGRect frame = CGRectZero;
frame.size.height = CGFLOAT_MIN;
[self.tableView setTableHeaderView:[[UIView alloc] initWithFrame:frame]];

Swift:

var frame = CGRect.zero
frame.size.height = .leastNormalMagnitude
tableView.tableHeaderView = UIView(frame: frame)

Commentaires

Comme d'autres l'ont noté, vous pouvez utiliser cette même solution pour les bas de page.


Sources et remerciements

Voir Documentation pour plus de détails sur la propriété tableHeaderView.

Merci à @liushuaikobe pour la vérification de l’utilisation du nombre normal le moins positif.

Ma réponse initiale: https://stackoverflow.com/a/22185534/2789144

0
James Nelson

UIView peut être inséré en haut et en bas du tableau (glisser-déposer). Définissez leurs propriétés comme étant transparentes et d’une hauteur de 1 px. Ceci est pour enlever le rembourrage supplémentaire devant les cellules.

0
Alexander

Dans mon cas, le problème était lié aux contraintes que je postulais. Je dois les changer pour afficher 2 lignes dans mon cas tout en bas du tableau touchant la dernière ligne. 

0
Ammar Mujeeb

vous pouvez également utiliser ce code pour supprimer de l'espace entre la première cellule de uitableview.

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
 {
    return 0.002f;// set this...
 }
0
Shahzaib Maqbool