像 Chanel 应用程序一样自定义 Collection View 布局

Custom Collection View Layout like Chanel app

我正在尝试做一个像 Chanel 应用程序那样的自定义布局,您可以在 Appstore 中找到该应用程序。 https://itunes.apple.com/us/app/chanel-fashion/id409934435?mt=8

我知道他们正在使用 UICollectionView,但不知道如何开始。 交互感觉就像混合了分页滚动的表格视图。当您滚动元素时,第一个元素将自身定位在顶部。

  1. 从仅拖动和定位一个 UIView 开始。请参阅 UIGestureRecognizer docs and look for existing examples 的可移动视图。您需要 UIPanGestureRecognizer 才能移动视图。
  2. 根据 Y 位置调整视图大小。
  3. 根据视图大小使用几个自动布局约束在该视图中创建和定位图像。

请注意,Chanel 应用程序针对这些约束具有不同的常量。对于最小视图高度,一个图像的顶部是 80% 高度,对于另一个图像它是 90% 高度。确保您可以从代码中操作约束(我认为从那里的代码创建所有内容是个好主意,XIB 不是很灵活)。

  1. 当您停止移动视图时,将视图 "anchoring" 调整到特定点(例如,顶部 = -75%、0%、75%、90%,与我在 Chanel 应用程序中看到的相比)。只需找到最近的一个并为它设置动画视图即可。
  2. 用 1 个视图完成后,将所有工作移至 NSView 子类(如果还没有)并创建这些视图的集合。

您可以创建 UICollectionView,但我宁愿用一个简单的 NSArray 来创建它:我实际上没有看到在这里使用 UICollectionView 的理由;这是一个非常简单的结构。无论如何,您编写自己的手势识别器(不是吗?我看不到其他方式)-那么使用 UICollectionView 有什么意义?如果有一天你想扩展应用程序的功能,UICollectionView 不太可能帮助你。好吧,这是我假设的方法,你可以在研究的时候找到另一种方法。

  1. 在移动 "active" 视图时定位其他视图。手工完成,没有任何 UIScrollViews.
  2. 编写一个函数,在移动视图时反映 "neighbor" 视图的 Y 位置。它应该 "slow down" 到屏幕底部。