UICollectionView horizontale de pagination avec de l'espace entre les pages
Je suis à la recherche d'un moyen de remplacer le natif UIPageViewController
horizontale de pagination avec un UICollectionView
.
jusqu'à présent je n'ai suivantes:
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.itemSize = collectionView.frame.size
layout.minimumLineSpacing = 0
layout.minimumInteritemSpacing = 10
collectionView.setCollectionViewLayout(layout, animated: false)
collectionView.isPagingEnabled = true
collectionView.alwaysBounceVertical = false
cela fonctionne bien et j'obtiens une horizontale de pagination effet.
Maintenant je veux ajouter de l'espace horizontal entre les pages (comme u fera avec UIPageViewControllerOptionInterPageSpacingKey
sur UIPageViewController
)
jusqu'à présent, je ne pouvais pas l'amende un moyen d'ajouter les espaces sans endommager la pagination effet.
je cherche pour le même comportement qu'avec le UIPageViewController
: la cellule doit remplir la totalité de la largeur de l'écran, et l'espace entre les cellules ne doit être visible lors de la commutation d'une page.
OriginalL'auteur Eyal | 2017-02-27
Vous devez vous connecter pour publier un commentaire.
Solution:
collectionView.isPagingEnabled = false
minimumLineSpacing
pour la distance entre les pagestargetContentOffsetForProposedContentOffset:withScrollingVelocity:
pour déplacer le contentOffset le plus proche de la page. Vous pouvez calculer la page avec un simple calcul basé sur votreitemSize
etminimumLineSpacing
, mais il peut prendre un peu de travail pour obtenir ce droit.Solution Deux:
collectionView.isPagingEnabled = true
minimumLineSpacing
pour la distance entre les pagesminimumLineSpacing
de 10 puis de définir le cadre de la collectionView à {0,-5, largeur+10, hauteur}minimumLineSpacing
de faire le premier et le dernier élément s'affichent correctement.Vous avez raison, j'ai ajouté une solution plus facile
excellente idée merci
Merci pour l'astuce, réussi à le faire correspondre les encarts comme vous l'avez dit
minimumLineSpacing = 20
etsectionInset = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10)
dans le CollectionViewLayoutEssaie de faire la même chose avec un ASPagerNode...
OriginalL'auteur Jon Rose
Heres le code écrit en Swift 3.1, je suis sûr que c'est facile à comprendre pour vous:
L'espoir peut vous aider.
OriginalL'auteur Rick