如何在UICollectionView中显示上一个/下一个单元格的预览时减慢滚动速度?

时间:2016-03-22 06:46:52

标签: ios objective-c pagination uicollectionview uicollectionviewlayout

我知道已经有很多问题要问这个问题了。但大多数问题已经过时或没有答案。我的实现问题不是预览,而是分页速度?

我可以在UICollectionView中显示上一个/下一个单元格但是当我尝试快速滚动它时,它滚动(通过跳过)1或2页。当我以良好的速度滚动它时会发生这种情况。

注意,我使用的是自定义布局。

这是我的代码:

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

    CGRect cvBounds = self.collectionView.bounds;
    CGFloat halfWidth = cvBounds.size.width * 0.5f;
    CGFloat proposedContentOffsetCenterX = proposedContentOffset.x + halfWidth;

    NSArray* attributesArray = [self layoutAttributesForElementsInRect:cvBounds];

    UICollectionViewLayoutAttributes* candidateAttributes;
    for (UICollectionViewLayoutAttributes* attributes in attributesArray) {

        // == Skip comparison with non-cell items (headers and footers) == //
        if (attributes.representedElementCategory !=
            UICollectionElementCategoryCell) {
            continue;
        }

        // == First time in the loop == //
        if(!candidateAttributes) {
            candidateAttributes = attributes;
            continue;
        }

        if (fabsf(attributes.center.x - proposedContentOffsetCenterX) <
            fabsf(candidateAttributes.center.x - proposedContentOffsetCenterX)) {
            candidateAttributes = attributes;
        }
    }

    return CGPointMake(round(candidateAttributes.center.x - halfWidth), proposedContentOffset.y);
}

任何帮助都将受到高度赞赏。

0 个答案:

没有答案