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

时间:2015-05-06 04:05:11

标签: ios objective-c swift uicollectionview uicollectionviewcell

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

2 个答案:

答案 0 :(得分:3)

您可以使用以下代码:

#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];
}

答案 1 :(得分:0)

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

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

如果您在屏幕上没有多个滚动视图/表格视图/集合视图