iOS collectionView:如何将单元格滚动到屏幕顶部

iOS collectionView: how to scroll a cell to the top of the screen

我想知道是否有办法将某个 UICollectionViewCell 滚动到视图顶部? 我尝试了 collectionView.scrollToItemAtIndexPath() 方法,但不是将单元格滚动到视图的顶部,而是将单元格滚动到视图的中心。

您可以使用以下代码:

#pragma mark - UICollectionViewDelegate

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    [collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:YES];
}

但是,如果你想强制滚动,那么试试这个。

#pragma mark - UICollectionViewDelegate

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
    [collectionView setContentOffset:CGPointMake(cell.center.x - collectionView.frame.size.width * 0.5, cell.frame.origin.y) animated:YES];
}

您还可以实现 UIScrollViewDelegate 方法 scrollViewShouldScrollToTop: 和 return 如果传入的滚动视图等于您要滚动到顶部的视图,则为 YES:

-(BOOL) scrollViewShouldScrollToTop:(UIScrollView*) scrollView 
{
    if (scrollView == self.myTableView)
       {
          return YES;
       }
    else 
       {
          return NO;
       }
}

如果您的卷轴不超过一个 view/table view/collection 在屏幕上查看