有人可以给我一个关于如何重新创建UltraVisual iPhone应用程序中使用的滚动效果的提示吗?这是一个用来说明效果的gif:
第一个"cell"
是全高,而其他显示的单元格是常规大小。当用户向上滚动时,第一个单元格慢慢地动画到常规高度,而下一个单元格慢慢变大。他们是使用UITableView?
还是UIScrollView?
我不知道它是如何制作的......
答案 0 :(得分:36)
这实际上非常简单。此视图使用UICollectionView和自定义UICollectionViewLayout。
一般原则是这样的。我组成了一个“拖动间隔” - 这是每个单元格之间拖动所需的距离。此值是任意的,但会影响用户拖动切换单元格的程度。集合视图的总高度是“拖动间隔”*视图中的项目数。然后我将布局设置为自动分页到最近的拖动间隔(这使它具有捕捉行为)。这与coverflow的工作方式非常相似。通过这个,您可以通过将contentOffset.y除以高度来计算“顶部单元格”的索引。
使用“顶部单元格”索引,您可以非常轻松地为每个单元格生成帧。顶部单元格的框架是{0,contentOffset.y,320,176},从那里你可以计算下一个单元格框架等等。
然后最后一个技巧是计算页面索引的插值。这基本上是当前单元格索引的小数部分。这将给出一个0到1之间的数字,可用于计算顶部框架和下面框架之间的插值。
每个'prepareLayout'计算屏幕上单元格的帧,然后在layoutAttributesForElementsInRect:中,根据生成的帧生成所有layoutAttributes。
使用此技巧可以创建各种复杂的布局。 UICollectionView可以是一个强大的野兽,但绝对需要一点点来围绕它。
答案 1 :(得分:10)
非常酷!我们做了一个相当简单的使用这样的控件,可以在这里找到: