相关疑难解决方法(0)

如何在Spotify的播放器中创建居中的UICollectionView

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

一只忙碌的猫

对我来说问题是双重的.

1)如何使细胞居中,以便您可以看到中间细胞以及左侧和右侧细胞.

  • 如果我创建方形的单元格并在每个单元格之间添加间距,则单元格会正确显示但不会居中.

2)使用pagingEnabled = YES,collectionview正确地从一个页面滑动到另一个页面.但是,如果没有单元格居中,它只是将集合视图移动到页面上,该页面是屏幕的宽度.所以问题是如何使页面移动,以便你获得上述效果.

3)如何移动细胞的动画大小

  • 我不想太担心这个.如果我可以让它工作那将是伟大的,但更难的问题是1和2.

我目前的代码是一个简单的UICollectionView,它具有正常的委托设置和自定义的UICollectionview单元格.也许我需要继承子类UICollectionViewFlowLayout?或者我可能需要将pagingEnabled变为NO,然后使用自定义滑动事件?会不会有任何帮助!

objective-c uiscrollview ios uicollectionview uicollectionviewlayout

39
推荐指数
4
解决办法
2万
查看次数

UICollectionView Cell滚动到中心

我在我的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)

objective-c ios uicollectionviewcell uicollectionviewlayout

12
推荐指数
3
解决办法
1万
查看次数