wake-up-neo.com

UICollectionView - Zur ersten Zelle blättern

Ich benutze UICollectionView und muss nach dem Klicken in eine Schaltfläche zur ersten Zelle scrollen.

Die Schaltfläche befindet sich in einer (großen) Kopfzeile in meiner Sammlungsansicht ... Wenn Sie auf "int" klicken, muss ich zu meiner ersten Zelle blättern, die sich unterhalb dieser Schaltfläche befindet.

Ich habe eine Aktion dieser Schaltfläche erstellt, aber ich weiß nicht, wie ich zur ersten UICollectionViewCell scrollen soll.

Kann mir jemand helfen? 

14

Verwenden Sie diese Delegatmethode und setzen Sie den indexPath an der ersten Position:

Schnell

self.collectionView?.scrollToItemAtIndexPath(NSIndexPath(forItem: 0, inSection: 0), 
                                                atScrollPosition: .Top, 
                                                        animated: true)

Swift 3

self.collectionView?.scrollToItem(at: IndexPath(row: 0, section: 0), 
                                  at: .top, 
                            animated: true)

Ziel c

[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0] 
                            atScrollPosition:UICollectionViewScrollPositionTop
                                    animated:YES];

Ändern Sie UICollectionViewScrollPositionTop, wenn Sie einen Bildlauf durchführen und an einer anderen Position anhalten möchten

42
Jacopo Penzo

Möglicherweise kann die verwandte Eigenschaft UIScrollView verwendet werden

collectionView.contentOffset.x = 0
5
user6226218

Sie können dies für Objective-C verwenden

        [self.restaurantCollectionView setContentOffset:CGPointZero animated:YES];
2
Celil Bozkurt

Die folgende Lösung funktioniert gut für mich:

UIView.animate(withDuration: 0.5, animations: {
     self.collectionView?.contentOffset.x = 0
})

Es scrollt zum ersten Element und das contentInset kann ebenfalls angezeigt werden.

2
Kevin Waltz
 scrollView.setContentOffset(CGPoint(x: 0.0, y: 0.0), animated: true)
0
JP Aquino
if let indexPath = self.collectionView?.indexPathForItem(at: CGPoint(x: 0, y: 0)) {
            self.collectionView?.scrollToItem(at: indexPath, at: .top, animated: false)
}
0
Sami Youssef

Ich habe festgestellt, dass es auf allen Geräten zuverlässig funktioniert und dass ich mit sicheren Bereichen im iPhone X-Stil richtig umgehe.

let top = CGPoint(x: collectionView.contentOffset.x,
                  y: collectionView.adjustedContentInset.top)
collectionView.setContentOffset(top, animated: false)

(Dies scrollt vertikal nach oben, aber Sie können es leicht nach links oben scrollen lassen, wenn Sie möchten.)

0
zekel

Default CollectionView Delgeate ...

- (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated;
0
Kavita