具有捕捉和缩放功能的滚动视图
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 中的封面流程建模的。
我一直想为 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 中的封面流程建模的。