簡體   English   中英

UICollectionView - 滾動到第一個單元格

[英]UICollectionView - Scrolling to first cell

我正在使用UICollectionView,我需要在單擊按鈕后滾動到第一個單元格。

該按鈕位於我的集合視圖中的(大)標題部分...當點擊它時,我需要滾動到位於此按鈕下方的第一個單元格。

我創建了這個按鈕的動作,但我不知道如何滾動到第一個UICollectionViewCell。

有人能幫我嗎?

使用此委托方法,將indexPath設置在第一個位置:

迅速

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

斯威夫特3

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

Objective-C的

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

如果要滾動並停在其他位置,請更改UICollectionViewScrollPositionTop

可以使用UIScrollView相關屬性

collectionView.contentOffset.x = 0

您可以將此用於Objective-C

        [self.restaurantCollectionView setContentOffset:CGPointZero animated:YES];

以下解決方案對我來說很好:

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

它滾動到第一個項目,也可以看到contentInset。

默認CollectionView Delgeate ...

- (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated;
if let indexPath = self.collectionView?.indexPathForItem(at: CGPoint(x: 0, y: 0)) {
            self.collectionView?.scrollToItem(at: indexPath, at: .top, animated: false)
}
 scrollView.setContentOffset(CGPoint(x: 0.0, y: 0.0), animated: true)

我發現可以在所有設備上可靠地工作並正確處理iPhone X風格的安全區域。

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

(這會垂直滾動到頂部,但如果您願意,可以輕松滾動到左上角。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM