自定义集合查看布局,如Chanel应用程序

时间:2016-03-22 16:39:50

标签: ios objective-c iphone layout collectionview

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

我知道他们正在使用UICollectionView,但不知道如何启动。 交互感觉就像一个混合了分页滚动的tableview。当你滚动元素增长,第一个元素将自己定位在顶部。

Chanel screenshot

1 个答案:

答案 0 :(得分:0)

  1. 从拖动开始只定位一个UIView。请参阅UIGestureRecognizer docs并查找现有examples个可移动视图。您需要UIPanGestureRecognizer才能移动视图。
  2. 根据Y位置调整视图大小。
  3. 创建&根据视图大小使用一对自动布局约束在该视图中定位图像。
  4. 请注意,Chanel应用程序对这些约束具有不同的常量。在最小视图高度的情况下,一个图像的顶部高度为80%,而另一个图像的高度为90%。确保你可以操作代码中的约束(我认为从代码创建所有内容是个好主意,XIB不是很灵活)。

    1. 当您停止移动视图时,使视图“锚定”到某些点(例如,顶部= -75%,0%,75%,与我在Chanel应用程序中看到的90%)。只需找到最近的一个并为其创建动画。
    2. 使用1个视图完成后,将所有工作移至NSView子类(如果尚未存在)并创建这些视图的集合。
    3. 您可以创建UICollectionView,但我宁愿使用简单的NSArray:我实际上没有理由在这里使用UICollectionView;这是一个非常简单的结构。无论如何,你编写自己的手势识别器(不是吗?我看不到另一种方式) - 那么使用UICollectionView有什么意义呢?如果您希望某天扩展应用功能,UICollectionView将无法帮助您。嗯,这是我的假设方法,你可以在做这个时找到另一个。

      1. 在移动“有效”视图时定位其他视图。手动完成,没有任何UIScrollView s。
      2. 在移动一个时,编写一个反映“邻居”视图的Y位置的函数。它应该“慢下来”到屏幕的底部。