web-dev-qa-db-ja.com

UICollectionView-最初のセルにスクロール

UICollectionViewを使用しており、ボタンをクリックした後、最初のセルにスクロールする必要があります。

ボタンは、コレクションビューの(大きな)ヘッダーセクションにあります... intをクリックすると、このボタンの下にある最初のセルにスクロールする必要があります。

このボタンのアクションを作成しましたが、最初のUICollectionViewCellにスクロールする方法がわかりません。

誰か助けてくれますか?

17

このデリゲートメソッドを使用して、indexPathを最初の位置に設定します。

Swift

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を変更します

46
Jacopo Penzo

UIScrollView関連プロパティを使用できる場合があります

collectionView.contentOffset.x = 0
7
user6226218

これをObjective-Cに使用できます

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

次の解決策は私にとってうまくいきます:

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

最初のアイテムまでスクロールし、contentInsetも表示できます。

2
user5052831
 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 Yousif

すべてのデバイスで確実に動作し、iPhone Xスタイルの安全な領域を正しく処理することがわかりました。

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

(これは垂直に上にスクロールしますが、必要に応じて簡単に左上にスクロールできます。)

0
zekel

デフォルトのCollectionView Delgeate ...

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