Comment faire pour centrer un UICollectionView quand il est exploité?
J'ai un UICollectionView
et il a beaucoup de UICollectionViewCells
sur elle. Je veux faire défiler la cellule vers le centre de la UICollectionView
quand il est exploité. Mon souci est que même si je tape sur le dernier ou le haut de la cellule, il doit se déplacer vers le centre de l'affichage de la collection.
J'ai essayé le réglage de la contentInsets
et les décalages, mais ils ne semblent pas fonctionner. Je crois que je vais avoir à modifier la taille du contenu sur la sélection et revenir à l'original lorsque le défilement commence.
Vérifier mon édité réponse, j'ai ajouté quelques modifications
OriginalL'auteur Ankit Srivastava | 2013-07-26
Vous devez vous connecter pour publier un commentaire.
Réglage contentInsets devrait donner un peu d'espace supplémentaire autour de la première et de la dernière des cellules:
Après, vous devriez appeler:
Il est important de passer corriger la position de défilement: UICollectionViewScrollPositionCenteredvertically
Cela devrait centre taraudé élément correctement.
MODIFIER
C'est vraiment étrange, mais après la mise UIEdgeInsets de collecte méthode de vue scrollToItemAtIndexPath ne fonctionne pas correctement, donc je fais quelques modification:
il fonctionne très bien pour moi.
Faute de frappe:
UIEdgeInstetsMake
devrait êtreUIEdgeInsetsMake
.J'ai "pas visible de l'interface pour UICollectionView déclare le sélecteur setContentInsets"
oh, oui, c'était une faute de frappe - devrait être setContentInset.
Le problème avec scrollToItemAtIndexPath + à l'aide de l'Encart ne se produit que lorsque la cellule est visible. J'ai fini par en utilisant à la fois la solution de contournement de Mikhail et scrollToItemAtIndexPath, selon si la cellule est visible ou non. (La solution de contournement ne fonctionne qu'avec les cellules visibles depuis cellForItemAtIndexPath serait de retour néant non visible cellules)
OriginalL'auteur Mikhail
Il semble que ce bug est causé par une mauvaise interaction entre le défilement de la vue
contentInset
etUICollectionViewFlowLayout
. Dans mes tests, réglagelayout.sectionInset
plutôt quecollectionView.contentInset
éliminé le problème.Basé sur la a accepté la réponse ci-dessus, je voudrais éliminer la solution de contournement, et le changement:
à
OriginalL'auteur humblehacker
Swift 3 solution pour le défilement et le centrage de l'écran pour faire la taraudés élément visible:
Ce n'est pas ajouter encadré ci-dessus ou en vertu de la
collectionView
!OriginalL'auteur budidino
Vous pouvez utiliser
scrollToItemAtIndexPath
méthode pour mettre sélectionné(taraudé) de la cellule à la position du centre de UICollectionViewVous pouvez utiliser
UICollectionViewScrollPositionCenteredVertically
vertical position centréeOriginalL'auteur Muhammed Tanrıverdi