UICollectionViewを使用しており、ボタンをクリックした後、最初のセルにスクロールする必要があります。
ボタンは、コレクションビューの(大きな)ヘッダーセクションにあります... intをクリックすると、このボタンの下にある最初のセルにスクロールする必要があります。
このボタンのアクションを作成しましたが、最初のUICollectionViewCellにスクロールする方法がわかりません。
誰か助けてくれますか?
このデリゲートメソッドを使用して、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
を変更します
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も表示できます。
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)
}
すべてのデバイスで確実に動作し、iPhone Xスタイルの安全な領域を正しく処理することがわかりました。
let top = CGPoint(x: collectionView.contentOffset.x,
y: collectionView.adjustedContentInset.top)
collectionView.setContentOffset(top, animated: false)
(これは垂直に上にスクロールしますが、必要に応じて簡単に左上にスクロールできます。)
デフォルトのCollectionView Delgeate ...
- (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated;