0

Ich habe eine CollectionView erstellt, die ich möchte hauptsächlich ein Filmplakat in der Mitte der Ansicht anzeigen. Ich werde ungefähr 20 Filme in der Sammlung anzeigen lassen, also möchte ich ein kleines bisschen vom nächsten Film am rechten Rand zeigen, und wenn ich zur nächsten Seite gehe, wird der fokussierte Film mit dem vorherigen zentriert und nächster Film, der jeweils auf der linken und rechten Seite ausstößt.Wie zentriere ich UICollectionViewCells horizontal mit aktiviertem Paging? (Swift)

Mit der Art, wie ich meinen Code habe, wenn ich zum nächsten Film blicke, ist der nächste Film überhaupt nicht zentriert, er bewegte sich viel zu weit nach rechts auf der X-Achse. Wie gehe ich programmatisch die Entfernung ein, die Paging benötigt? Wie kann ich erreichen, dass die collectionView die Seiten nach dem ersten korrekt zentriert?

Paging ist in meiner CollectionView aktiviert. Ich habe kein benutzerdefiniertes collectionViewFlowLayout erstellt.

Screenshots of my issue Video of my issue

Hier ist meine Kollektion und Scroll Code:

extension MainViewController: UICollectionViewDelegateFlowLayout { 
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
    let posterWidth = (collectionView.frame.size.height/3) * 2 
    return CGSizeMake(posterWidth, collectionView.frame.size.height) 
} 

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets { 
    let posterWidth = (collectionView.frame.size.height/3) * 2 
    let horizontalInset = (collectionView.frame.size.width - posterWidth)/2 
    return UIEdgeInsetsMake(0, horizontalInset, 0, horizontalInset) 
} 

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat { 
    return 20 
} 
} 

--------------- 

extension MainViewController: UIScrollViewDelegate { 
func scrollViewDidScroll(scrollView: UIScrollView) { 
    let index = Int(collectionView.contentOffset.x/collectionView.frame.size.width) 
    let movie = movies[index] 
    updateViews(movie) 
} 
} 

Antwort

1

Versuchen Sie es mit

[yourCollectionView setPagingEnabled:YES];