我在尝试创建类似于Spotify的播放器中的UICollectionView时遇到了很多困难:

对我来说问题是双重的.
1)如何使细胞居中,以便您可以看到中间细胞以及左侧和右侧细胞.
2)使用pagingEnabled = YES,collectionview正确地从一个页面滑动到另一个页面.但是,如果没有单元格居中,它只是将集合视图移动到页面上,该页面是屏幕的宽度.所以问题是如何使页面移动,以便你获得上述效果.
3)如何移动细胞的动画大小
我目前的代码是一个简单的UICollectionView,它具有正常的委托设置和自定义的UICollectionview单元格.也许我需要继承子类UICollectionViewFlowLayout?或者我可能需要将pagingEnabled变为NO,然后使用自定义滑动事件?会不会有任何帮助!
objective-c uiscrollview ios uicollectionview uicollectionviewlayout
我在我的UIViewController中使用UICollectionView.
我的collectionview属性设置如下.

现在我希望滚动后单元格在屏幕上居中!选项1:
选项2:

我需要做什么来实现选项2?
更新:
最后我使用下面的代码作为滚动与其他答案不顺利.
- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity
{ CGFloat offsetAdjustment = MAXFLOAT;
CGFloat horizontalCenter = proposedContentOffset.x + (CGRectGetWidth(self.collectionView.bounds) / 2.0);
CGRect targetRect = CGRectMake(proposedContentOffset.x, 0.0, self.collectionView.bounds.size.width, self.collectionView.bounds.size.height);
NSArray* array = [super layoutAttributesForElementsInRect:targetRect];
for (UICollectionViewLayoutAttributes* layoutAttributes in array) {
CGFloat itemHorizontalCenter = layoutAttributes.center.x;
if (ABS(itemHorizontalCenter - horizontalCenter) < ABS(offsetAdjustment)) {
offsetAdjustment = itemHorizontalCenter - horizontalCenter;
}
}
return CGPointMake(proposedContentOffset.x + offsetAdjustment, proposedContentOffset.y);
}
Run Code Online (Sandbox Code Playgroud)