避免显示一半UICollectionViewCell

时间:2014-02-03 07:30:05

标签: ios iphone objective-c ios7 uicollectionviewcell

如图所示,我的要求是避免在滚动时显示半个单元格....如果我滚动超过半个单元格的高度并释放,则单元格应该完成滚动到顶部..这有点类似to setPagingEnabled concept ...我想为每一行实现相同的概念..提前谢谢

2 个答案:

答案 0 :(得分:0)

覆盖

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

在UICollectionViewlayout中。返回值是您要使用的偏移量,而不是用户滚动到的偏移量。假设您的行的高度为100且当前proposedContentOffset(0,80),那么您可能希望返回(0,100),然后滚动您的集合视图20更多点。此时,您上一行的单元格将不再可见。

答案 1 :(得分:0)

  • (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset :( inout CGPoint *)targetContentOffset {

    CGFloat proposedOffset = targetContentOffset-> y;

    CGFloat heightOfPage = 65; CGFloat heightOfSpacing = 5.0f;

    CGFloat numOfPage = lround(proposedOffset /(heightOfPage + heightOfSpacing));

    CGFloat newY = numOfPage *(heightOfPage + heightOfSpacing);

    //如果计算出的y大于我们相应调整的最大可能值,则

    CGFloat contentHeight = _categoryCollectionView.contentSize.height;

    CGFloat collectionViewHeight = _categoryCollectionView.bounds.size.height;

    CGFloat maxY = contentHeight - collectionViewHeight;

    if(newY> maxY)

    {

    newY = maxY;
    

    }

    targetContentOffset-> y =(newY); }