我现在正试图复制这个:
如果您熟悉Google的应用程序,它看起来像是一个带有自定义流程布局的UICollectionView。
我正在扩展一个已经用一些额外代码关闭的问题。
Here's the link to the other question.
在自定义流程布局类中,我可以通过设置负最小行距值来创建“堆叠”效果,并使用以下内容:
- (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;
}
用于删除动画的滑动工作正常,但我无法创建“堆叠”外观,然后只将1个单元格向上拖动到视图中,同时保持剩余的卡片堆叠,就像您在上面看到的那样。 / p>
答案 0 :(得分:0)
我在这个视图中看到了两个部分。 1.一堆“卡片”和2.堆栈表。像这样打破它会使它更容易处理。
将UIView
子类创建为可以拖动的“卡片”(我称之为UICardView
)应该非常简单。创建这些“堆栈”也不应该太困难。我认为最困难的部分是有效添加投影。
第二部分包括许多移动部分:将这些堆栈添加到表中。实际上,该表用于平滑滚动和一致的间距,实际上,它是完全透明的。您需要为heightForRowAtIndexPath:
计算每堆“卡片”的高度。
这种方法可以实现平滑滚动,相对较低的内存占用,以及相对容易的高度自定义。此外,这些较小的部件应易于维护并添加功能。