具有捕捉和缩放功能的滚动视图

Scrollview with snapping and scaling

我一直想为 Swift iOS 应用程序制作滚动缩放 UI,但一直不知道要搜索什么。然后昨晚我在 Apple News 应用程序中看到了这个,这正是我想要做的。关于从哪里开始的任何指示?

我以前做过带分页的滚动视图,但这需要每个 "page" 大小相同,而且我只能看到当前页面。我喜欢您在当前页面上可以看到左右页面 10% 的方式。另外,我希望居中的 "page" 比外面的大。

这种滚动动画有名字吗?甚至不知道它叫什么让搜索变得困难。

谢谢!

动图:

这是一个 UICollectionView,实现了众所周知的 "Carousel"。

作为 UICollectionViewFlowLayout 子类,只需进行一些简单的调整,实际上非常 很容易实现它。你只需要覆盖三个方法:

  • shouldInvalidateLayout(forBoundsChange:)true,滚动时获取布局

  • layoutAttributesForElements(in:) 修改屏幕单元格的 UICollectionViewLayoutAttributes 的 transform3D 属性

  • targetContentOffset(forProposedContentOffset:withScrollingVelocity:)得到分页效果

Apple 在 WWDC 2012 视频中向您解释了这一切。 IIRC 他们称它为 "Cover Flow",因为它是根据 Mac Finder 中的封面流程建模的。