集合视图中的水平滚动

时间:2019-09-14 14:55:35

标签: ios uicollectionview swift4

当收藏视图单元格水平滚动时,我想做些事情。但是我不知道滚动时哪个函数被调用。

我在表格视图单元格内部有一个集合视图单元格,并且该集合视图单元格水平滚动

3 个答案:

答案 0 :(得分:1)

如果使用情节提要,请在Attributed Inspector中找到一个选项,将Scroll Direction设为Horizontal,默认情况下将其设置为Vertical

以编程方式

let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical
let collectionView = UICollectionView(frame: frame, collectionViewLayout: layout)

答案 1 :(得分:0)

  1. 首先,将您的collectionview的委托设置为您的viewcontroller(或视图)
  2. 在viewcontroller中实现UIScrollViewDelegate方法,您可以跟踪collectionview的滚动。

答案 2 :(得分:0)

有几种方法可以在滚动集合视图时通知您,所有方法都包含在UIScrollViewDelegate协议中,因此也包含在UICollectionViewDelegate协议中,该协议继承自前者。

    实际上,每次内容偏移量更改时,都会调用
  1. scrollViewDidScroll(_:)。这不仅意味着用户进行了主动滚动,而且还意味着通过惯性滚动,程序化滚动和弹跳。您可以使用此方法来响应滚动距离,例如,通过查询滚动视图的contentOffset属性。
  2. 相比之下,
  3. scrollViewWillBeginDragging(_:)仅在用户发布滚动开始时被调用(这就是为什么在文档中可以看到仅在某些情况下才调用此方法的原因。延迟,因为滚动视图的手势识别器需要时间来确定是轻击还是平移手势)。在用户抬起手指并再次开始滚动之前,不会再次调用它。
  4. 当上面讨论的用户发出的滚动结束时,会调用
  5. scrollViewWillBeginDecelerating(_:),但是滚动视图将继续滚动以实现这种惯性感觉。再一次,直到用户再一次抬起手指,它才会再次被调用。

基本上就是这样。如果这仍然不能缩小您要跟踪的事件的范围(例如,您希望在用户仅在初始位置开始滚动时得到通知),则需要设置一些标志或跟踪其他属性。

例如,要跟踪水平滚动,您需要将滚动视图的先前内容偏移量与当前内容进行比较,或者通过scrollView.panGestureRecognizer.velocity(in: collectionView)检查滚动速度。