【问题标题】:Ultravisual iPhone app like UIView or UITableView scrollUIView 或 UITableView 滚动等超可视化 iPhone 应用
【发布时间】:2013-12-13 13:36:45
【问题描述】:

谁能告诉我如何重新创建 UltraVisual iPhone 应用程序中使用的滚动效果?这是一个 gif 来说明效果:

第一个"cell" 是全高的,而其他显示的单元格是常规大小的。当用户向上滚动时,第一个单元格会慢慢动画到常规高度,而下一个单元格会慢慢变大。他们使用UITableView? 还是UIScrollView? 我不知道它是如何制作的...

【问题讨论】:

  • @daniesy 你能告诉我你是如何实现相同的动画的吗?我想要相同的行为而不会重叠图像。

标签: ios iphone uitableview uiscrollview


【解决方案1】:

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

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

一般原则是这样的。我组成了一个“拖动间隔”——这是在每个单元格之间拖动所需的距离。该值是任意的,但会影响用户必须拖动多少才能切换单元格。集合视图的总高度是“拖动间隔”*视图中的项目数。然后我将布局设置为自动分页到最近的拖动间隔(这使它具有捕捉行为)。这与 Coverflow 的工作方式非常相似。由此,您可以通过将 contentOffset.y 除以高度来计算“顶部单元格”的索引。

使用“顶部单元格”索引,您可以非常轻松地为每个单元格生成帧。顶部单元格的框架是 { 0, contentOffset.y, 320, 176 },然后您可以从那里计算下一个单元格框架等等。

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

每个'prepareLayout'都会计算屏幕上单元格的边框,然后在layoutAttributesForElementsInRect:中,根据生成的边框生成所有的layoutAttributes。

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

【讨论】:

  • 你在 iPhone 上制作了有史以来最好的应用程序:D 我真的很喜欢它。谢谢:D
  • 你有机会在github上发布视图代码吗?我也想用它:-)
  • 好奇你用过 UIDynamicAnimator 吗?
  • 是啊,问了之后知道了,学到了很多,谢谢指点!
  • 是的,如果您不介意在 Github 上发布该代码,那就太好了。我很想看看你是怎么做到的
【解决方案2】:

这很酷!我们制作了一个相当简单易用的控件,可以在这里找到:

https://github.com/RobotsAndPencils/RPSlidingMenu

【讨论】:

  • 我只是在搜索这个 android.:(
  • 有没有办法去掉底部的空白?
  • 不确定你所说的空白是什么意思。它向上滚动到最后一个单元格。您可以将背景设置为 clearColor 或您喜欢的任何颜色。这能回答你的问题吗?
  • @m177312 是的,当然,我在这里添加了它作为一个问题github.com/RobotsAndPencils/RPSlidingMenu/issues/6,我会在不久的将来调查它。
  • @m177312 闪烁已修复。一旦它们在 podspec 中合并,您就可以开始使用了:github.com/CocoaPods/Specs/pull/10303
猜你喜欢
  • 1970-01-01
  • 2017-05-12
  • 1970-01-01
  • 2021-03-24
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多