超视觉 iPhone 应用程序类似于 UIView 或 UITableView 滚动。

16
请问有人可以给我一些提示,如何重新创建UltraVisual iPhone应用程序中使用的滚动效果?这是一个GIF以说明这种效果:
第一个“单元格”是全高度,而其他显示的单元格都是常规大小。当用户向上滚动时,第一个单元格会缓慢动画到常规高度,同时下一个单元格会慢慢增大。他们使用了UITableView还是UIScrollView?我不知道它是如何制作的...

@daniesy,你能告诉我如何实现相同的动画效果吗?我想要相同的行为,但不希望图像重叠。 - Gaurang Makwana
2个回答

35

哈,你让我开心了!我实际上写了那个视图 :)

这实际上非常简单。这个视图使用带有自定义UICollectionViewLayout的UICollectionView。

一般原则是这样的。我编制了一个“拖动间隔”-也就是每个单元格之间所需的拖动距离。这个值是任意的,但影响用户切换单元格时需要拖动的距离。集合视图的总高度是“拖动间隔”*视图中的项目数量。然后,我将布局设置为自动分页到最近的拖动间隔(这给它了捕捉行为)。这与coverflow工作方式非常相似。从此,您可以通过将contentOffset.y除以高度来计算“顶部单元格”的索引。

通过“顶部单元格”索引,您可以相当容易地生成每个单元格的框架。顶部单元格的框架是 { 0、contentOffset.y、320、176 },从那里你可以计算下一个单元格的框架,以此类推。

然后,最后一个技巧是计算页面索引的插值。这基本上是当前单元格索引的小数部分。这将给出介于0和1之间的数字,可用于计算顶部框架和下面框架之间的插值。

每个“prepareLayout”都会计算屏幕上单元格的框架,然后在layoutAttributesForElementsInRect:中生成基于生成的框架的所有layoutAttributes。

使用这个技巧,您可以创建各种复杂的布局。 UICollectionView可能是一个强大的工具,但肯定需要一些时间来理解它。


2
你在 iPhone 上开发了有史以来最棒的应用程序 :D 我非常喜欢它。谢谢 :D - Dănuț Mihai Florian
1
你好,你是否使用过UIDynamicAnimator? - Codezy
@Codezy 不需要使用UIDynamics。这是一个相对简单的集合布局实现。 - Andy Poes
1
是的,在问了那个问题之后,我学到了很多东西,感谢你的指引! - Codezy
3
如果您不介意在Github上发布该代码,那就太好了。我很想看看您是如何做到的。 - barndog
显示剩余11条评论

10

1
我只是在为安卓搜索这个。:( - Shadow
有没有办法去掉底部的空白? - m177312
1
不确定您所说的空白是什么意思。它会滚动到最后一个单元格。您可以将背景设置为clearColor或任何您喜欢的颜色。这回答了您的问题吗? - Codezy
2
@m177312 当然,我已经在这里https://github.com/RobotsAndPencils/RPSlidingMenu/issues/6添加了它作为一个问题,并且我将在不久的将来研究它。 - Codezy
3
@ m177312 闪烁问题已经解决。一旦它们合并到podspec中,您就可以开始了:https://github.com/CocoaPods/Specs/pull/10303 - Codezy
显示剩余15条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接