有人可以给我提示如何重新创建UltraVisual iPhone应用程序中使用的滚动效果吗?这是说明效果的gif:
第一个"cell"
为全高,而其他显示的单元格为常规尺寸。当用户向上滚动时,第一个单元格会逐渐设置为常规高度的动画,而下一个单元格会逐渐变大。他们使用UITableView?
还是UIScrollView?
我不知道它是如何制成的...
最佳答案
哈,你让我开心!我实际上写了这个观点:)
这实际上非常简单。该 View 使用带有自定义UICollectionViewLayout的UICollectionView。
一般原则是这样的。我创建了一个“拖动间隔”-这是每个单元格之间拖动所需的距离。该值是任意的,但会影响用户拖动切换单元格的数量。集合 View 的总高度为“拖动间隔” * View 中的项目数。然后,我将布局设置为自动分页到最接近的拖动间隔(这使其具有捕捉行为)。这与Coverflow的工作原理非常相似。由此,您可以通过将contentOffset.y除以高度来计算“顶部单元格”的索引。
使用“顶部单元格”索引,您可以轻松地为每个单元格生成框架。顶部单元格的帧是{0,contentOffset.y,320,176},然后您可以从中计算下一个单元格的帧,依此类推。
然后,最后一个技巧是计算页面索引的插值。这基本上是当前单元格索引的小数部分。这将提供0到1之间的数字,可用于计算顶部框架和下方框架之间的插值。
每个“prepareLayout”都会计算屏幕上单元格的帧,然后在layoutAttributesForElementsInRect:中,根据生成的帧生成所有layoutAttributes。
使用此技巧,您可以创建各种复杂的布局。 UICollectionView可以是强大的野兽,但肯定需要花些时间来解决。