【问题标题】:How to center a cell with the content offset in a UICollectionView with scrollToItemAtIndexPath如何使用 scrollToItemAtIndexPath 在 UICollectionView 中以内容偏移量居中单元格
【发布时间】:2015-05-24 18:41:59
【问题描述】:

我正在实现一个 UICollectionView,它只显示一行单元格。它就像一个图像封面流。这意味着我已经继承了 UICollectionViewFlowLayout。当我用手指滚动时,我的实现工作正常,这意味着调用了以下委托方法并将单元格居中;

-(CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity

但是,当视图加载时,我希望视图自动滚动到一个单元格。对于这个自动滚动,我使用以下内容;

[self.CollectionView scrollToItemAtIndexPath:_selectedIndexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];

问题在于未调用 targetContentOffsetForProposedContentOffset,因此当自动滚动完成时,单元格会偏离中心。

那么如何以编程方式滚动我的集合视图,使其也以滚动到的单元格为中心?

【问题讨论】:

    标签: objective-c uicollectionview uicollectionviewlayout


    【解决方案1】:

    自己解决了这个问题。

    根据书“iOS UICollectionView The Complete Guide”(清单 6.7)scrollToItemAtIndexPath:不能用于此封面流类型布局,因为它不会使单元格居中。

    我已经按照书中建议的方式发布了。根据你想要的indexPath,你需要自己计算collection view的偏移量,然后使用targetContentOffsetForProposedContentOffset:自动为你居中。

    CGPoint proposedOffset = CGPointMake(0, 0);
    
    proposedOffset.x = _selectedIndexPath.item * (flow.itemSize.width + flow.minimumLineSpacing);
    
    CGPoint contentOffset = [flow targetContentOffsetForProposedContentOffset:proposedOffset withScrollingVelocity:CGPointMake(0, 0)];
    
    [self.statCollectionView setContentOffset:contentOffset animated:YES];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多