有人可以给我提示如何重新创建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可以是强大的野兽,但肯定需要花些时间来解决。

07-26 09:42
查看更多