复制Google的搜索iOS卡片动画

STA*_*MMX 8 objective-c ios uicollectionview google-now

我现在正试图复制这个:

在此输入图像描述

如果您熟悉Google的应用程序,它看起来像具有自定义流程布局的UICollectionView.

我正在扩展一个已经用一些额外的代码关闭的问题.

这是另一个问题的链接.

在自定义流布局类中,我可以通过设置负最小行距值来创建"堆叠"效果,并使用以下内容:

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{
    NSArray *allAttributesInRect = [super layoutAttributesForElementsInRect:rect];

    CGPoint centerPoint = CGPointMake(CGRectGetMidX(self.collectionView.bounds), CGRectGetMidY(self.collectionView.bounds));

    for (UICollectionViewLayoutAttributes *cellAttributes in allAttributesInRect)
    {
        if (CGRectContainsPoint(cellAttributes.frame, centerPoint))
        {
            cellAttributes.transform = CGAffineTransformIdentity;
            cellAttributes.zIndex = 1.0;
        }
        else
        {
            cellAttributes.transform = CGAffineTransformMakeScale(0.75, 0.75);
        }
    }

    return allAttributesInRect;
}
Run Code Online (Sandbox Code Playgroud)

用于删除动画的滑动工作正常,但我无法创建"堆叠"外观,然后将1个单元格向上拖动到视图中,同时保持剩余的卡片堆叠,就像您在上面看到的那样.

Fen*_*ski 0

我认为这个观点有两个部分。1. 一堆“纸牌”& 2. 一张纸牌桌。像这样分解它使它更容易处理。

子类创建一张可以拖动UIView的“卡片”(我称之为“卡片” )应该非常简单。UICardView创建这些的“堆栈”也不应该太困难。我认为最难的部分是有效地添加阴影。

第二部分包括许多移动部分:将这些堆栈添加到表中。实际上,该表格用于平滑滚动和一致的间距,并且实际上是完全透明的。您需要计算 的每堆“卡片”的高度heightForRowAtIndexPath:

这种方法允许平滑滚动、相对较低的内存占用以及相对轻松的高度定制。此外,这些较小的部件应该易于维护和添加功能。