UICollectionViewFlowLayout 中的自定义动画 - 水平滚动方向

Custom animation in UICollectionViewFlowLayout - scroll direction horizontal

我正在实施自定义 UICollectionViewFlowLayout,我想做这样的事情:

基本上,这是一个简单的集合视图,滚动方向设置为UICollectionViewScrollDirectionHorizontal

活动单元格 A(中间的单元格)必须具有固定大小(例如:300x300)和其他单元格,在本例中为 B,应该更小(例如:275x275)。​​

当在它们之间执行滚动时,两个单元格都应该改变它们的大小。

我可能需要覆盖 - (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect 并实现某种 CGAffineTransformMakeScale。我的想法对吗?以前还有其他人这样做过吗?

问题已解决。

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{
    CGFloat centerX = self.collectionView.contentOffset.x + self.collectionView.frame.size.width * 0.5;

    NSArray *attributes = [super layoutAttributesForElementsInRect:rect];

    for (UICollectionViewLayoutAttributes *attrs in attributes) {

        CGFloat diff = ABS(attrs.center.x - centerX);

        CGFloat newScale = diff * scaleFactor / (self.itemSize.width + self.minimumLineSpacing);

        if (newScale > scaleFactor) {
            newScale = scaleFactor;
        }

        attrs.transform = CGAffineTransformMakeScale(1 - newScale, 1 - newScale);
    }

    return attributes;
}