web-dev-qa-db-fra.com

Ont-ils ajouté davantage de remplissage à UITableVIew dans iOS 11?

Est-ce juste moi ou ils ont ajouté beaucoup plus de remplissage aux en-têtes de section et aux pieds de page de UITableViews groupés dans iOS 11?

J'ai compilé mon application pour fonctionner avec iOS 11 et j'ai remarqué le remplissage supplémentaire ..__ Je l'ai un peu résolu en définissant contentInset.top sur une valeur négative vérifiant que le système d'exploitation est iOS 11, mais il s'agit d'une solution de contournement déplorable.

Existe-t-il un autre moyen plus efficace de supprimer le remplissage supplémentaire des vues de table groupées afin d'obtenir les mêmes résultats sur toutes les applications iOS prises en charge? Ça pue un peu d'avoir plusieurs vérifications pour une chose aussi stupide.

Capture d'écran pour comparaison:

 iOS 10 vs iOS 11 UITableView comparison

Comme vous pouvez le constater, sur iOS 11, il existe un espacement supplémentaire entre les sections (ouais, ce sont des sections!).

8
Phillip

Ceci est le nouveau paramètre contentInsetAdjustmentBehavior de UIScrollView que vous pouvez définir comme .never pour éviter un remplissage supplémentaire

if #available(iOS 11.0, *) {
    tableView.contentInsetAdjustmentBehavior = .never
}

ou dans le storyboard sous Inspecteur de taille

 enter image description here

12
Rashid

Dans iOS 11, le pied de section présente une vue qui ajoute à l’espacement entre les sections. Vous devez définir explicitement la vue du pied de page sur nil en plus de régler la hauteur du pied de page:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    return nil;
}

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

Cela fera ressembler votre vue de table à ce que vous aviez dans iOS 10 et n’aurait aucun effet sur les versions précédentes d’iOS. Vous pouvez faire la même chose pour l'en-tête si vous n'en avez pas besoin.

3
Bms270

Il vous suffit de définir l'en-tête et le pied de page de la vue tableau.

- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    return [[UIView alloc] init];
}
- (UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    return [[UIView alloc] init];
}
2
wangjx

Avec mon .grouped UITableView, je faisais face au même problème dans iOS 11, cela fonctionnait bien lorsque j'utilisais une UITableViewController, mais pas dans UIViewController, ce qui suit a fonctionné dans mon cas:

tableView.estimatedSectionHeaderHeight = 0

Sans la ligne ci-dessus, tableView(heightForHeaderInSection n'est jamais appelé.

Cela ressemble à un bug dans iOS 11.

0
AamirR

J'ai résolu mon problème en définissant l'en-tête et le pied de page dans Storyboard. Apparemment, dans Xcode 9, il s’agit des valeurs par défaut lorsque vous créez un UITableView

 enter image description here

J'ai essayé de les mettre à 0, mais 1 est le minimum et cela a résolu le problème. De plus, j'ai vérifié son comportement si le automatic était coché et que cela fonctionnait également.

De plus, je ne sais pas s'il s'agit d'un bogue, mais je ne pourrais pas le faire sur une table existante. Je devais le supprimer et le faire glisser à nouveau dans UIViewController.

0
Đorđe Nilović

Si la réponse de rashid n'a pas fonctionné avec la définition de contentInsetAdjustmentBehavior sur jamais, essayez ce qui suit:

self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0
self.tableView.estimatedSectionFooterHeight = 0

En-tête de table flottante iOS 11

0
Luca Ventura

J'ai eu un problème similaire, je pense que c'était un bug dans Old Xcode.

Si vous utilisez autolayout et que vous avez une vue du contenu et des vues à l'intérieur de celle-ci, le paramètre Limiter aux marges ne fonctionne pas dans Xcode 8, mais maintenant dans xCode 9. Vous devez redéfinir vos contraintes et décocher la case correspondante dans la vue dans tous les voir les cellules. Cela sera alors cohérent sur tous les périphériques ios 10 et ios 11. 

 enter image description here

0