Lorsque l'iPhone X est utilisé paysage, vous êtes censé vérifier safeAreaInsets de faire assez grande gouttières sur la gauche et la droite. UITableView a la nouvelle - insetsContentViewsToSafeArea
de la propriété (par défaut à true) pour conserver automatiquement le contenu de la cellule dans la zone de sécurité.
Je suis surpris que UICollectionView semble pas avoir quelque chose de similaire. Je m'attends à que pour une verticale de défilement vue de collection, les côtés gauche et droit serait encart de la zone de sécurité en mode paysage (et à l'inverse, une horizontale de défilement de la collection de point de vue, en médaillon, si nécessaire en mode portrait).
La façon la plus simple d'assurer ce comportement semble être à ajouter à la collection-vue-contrôleur:
- (void)viewSafeAreaInsetsDidChange {
[super viewSafeAreaInsetsDidChange];
UIEdgeInsets contentInset = self.collectionView.contentInset;
contentInset.left = self.view.safeAreaInsets.left;
contentInset.right = self.view.safeAreaInsets.right;
self.collectionView.contentInset = contentInset;
}
... en supposant contentInset.gauche/droite sont normalement zéro.
(NOTE: oui, pour un UICollectionViewController, qui doit être self.view.safeAreaInsets
; à l'époque on l'appelle, le changement d' safeAreaInsets
a curieusement pas encore propagé à l' self.collectionView
)
Ai-je raté quelque chose? Que passe-partout est assez simple, mais il est effectivement nécessaire maintenant pour chaque vue de collection qui touche un bord de l'écran. Il semble vraiment bizarre qu'Apple n'ait pas fournir quelque chose pour activer cette fonction par défaut.