UICollectionView - 滚动到第一个单元格

问题描述 投票:0回答:8

我正在使用 UICollectionView,单击按钮后需要滚动到第一个单元格。

该按钮位于我的集合视图中的(大)标题部分...单击它时,我需要滚动到位于该按钮下方的第一个单元格。

我创建了此按钮的操作,但我不知道如何滚动到第一个 UICollectionViewCell。

有人可以帮助我吗?

ios swift xcode6 uicollectionview uicollectionviewcell
8个回答
50
投票

使用这个委托方法,将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)

目标-C

[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0] 
                            atScrollPosition:UICollectionViewScrollPositionTop
                                    animated:YES];
如果您想滚动并停在不同的位置,请更改

UICollectionViewScrollPositionTop

 


14
投票
也许可以使用 UIScrollView 相关属性

collectionView.contentOffset.x = 0
    

3
投票
以下解决方案对我来说效果很好:

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

它滚动到第一项,并且也可以看到 contentInset。


2
投票
您可以将其用于目标 - C

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

1
投票
scrollView.setContentOffset(CGPoint(x: 0.0, y: 0.0), animated: true)
    

0
投票
默认 CollectionView 代理...

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

0
投票
if let indexPath = self.collectionView?.indexPathForItem(at: CGPoint(x: 0, y: 0)) { self.collectionView?.scrollToItem(at: indexPath, at: .top, animated: false) }
    

0
投票
我发现它可以在所有设备上可靠地工作,并正确处理 iPhone X 风格的安全区域。

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

(这会垂直滚动到顶部,但如果您愿意,您可以轻松地将其滚动到左上角。)

© www.soinside.com 2019 - 2024. All rights reserved.