使用Objective C将UICollection View Cell捕捉到中心

时间:2017-11-14 14:46:58

标签: ios objective-c uicollectionview uicollectionviewcell uicollectionviewlayout

我在Objective C中实现了一个Horizo​​ntal UICollectionView。我想将单元格捕捉到集合视图的中心,如下图所示。当项目被捕捉到中心时,我希望左右两侧的项目部分可见。我怎样才能做到这一点?

enter image description here

我使用了自定义IOCOllectionViewFlowLayout并覆盖了

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

但它不适合我,

CGFloat approximatePage = self.collectionView.contentOffset.x / self.pageWidth;
    CGFloat currentPage = (velocity.x < 0.0) ? floor(approximatePage) : ceil(approximatePage);

    NSInteger flickedPages = ceil(velocity.x / self.flickVelocity);
    float pageWidth = self.pageWidth;
    if (flickedPages) {
        proposedContentOffset.x = flickedPages * self.pageWidth;
    } else {
        proposedContentOffset.x = currentPage * self.pageWidth;
    }
    return proposedContentOffset;

如何使用Objective C实现它?

2 个答案:

答案 0 :(得分:0)

您需要使用UIViewController滚动视图的scrollViewWillEndDragging委托进行操作。在这里进一步阅读https://rolandleth.com/uicollectionview-snap-scrolling-and-pagination

答案 1 :(得分:0)

在这种情况下,当您需要水平居中时,您需要实现委托方法scrollViewWillEndDragging作为kirander提到的。当您检测到该用户停止滚动时,检测可见单元格并使用以下代码将其放在中心:projectSelectionCollectionView.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true)