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?
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
Möglicherweise kann die verwandte Eigenschaft UIScrollView verwendet werden
collectionView.contentOffset.x = 0
Sie können dies für Objective-C verwenden
[self.restaurantCollectionView setContentOffset:CGPointZero animated:YES];
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.
scrollView.setContentOffset(CGPoint(x: 0.0, y: 0.0), animated: true)
if let indexPath = self.collectionView?.indexPathForItem(at: CGPoint(x: 0, y: 0)) {
self.collectionView?.scrollToItem(at: indexPath, at: .top, animated: false)
}
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.)
Default CollectionView Delgeate ...
- (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated;