实现视差滚动的Twitter个人资料(例如视图)

时间:2019-05-28 10:07:00

标签: ios swift uicollectionview uiscrollview parallax

我想实现以下视图,在该视图中可以完全滚动视图,并容纳2个具有无限滚动内容的不同滚动视图(主视图和辅助视图)。这代表了我想要的确切东西。

enter image description here

  1. 红色视图为超级视图-应该垂直滚动
  2. 绿色视图的高度与当前视图相同,只是静态的。那不会滚动
  3. 蓝色视图是水平滚动视图,其中每个标签都有一个黄色垂直滚动的无穷大集合视图
  4. 标签按照给定视频滚动。在每个标签下都有我在第3点提到的收藏视图

蓝色框是滚动视图,我希望滚动以这种视差方式水平发生。

enter image description here

我能够以正确的方式实现上述视差,但是每个标题都包含自己的collectionview。实现此功能时,我无法无限滚动。

如何通过无限滚动完全实现相同的行为?

1 个答案:

答案 0 :(得分:1)

我对此做了一个粗略的实现。

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView == colorsCollectionView {
        let newContentOffSetX = scrollView.contentOffset.x
        let distance = contentOffSetX + newContentOffSetX
        // Scroll the text collection view proportinately
        let titleScrollDistance = (distance/colorsCollectionView.frame.width * 75.0)
        titlesCollectionView.contentOffset = CGPoint(x: titleScrollDistance, y: titlesCollectionView.contentOffset.y)
        contentOffSetX = newContentOffSetX
    }
}

contentOffSetX是类(ViewController)的一个属性,我使用该属性来跟踪底部集合视图的滚动距离。最初将其设置为0。当用户在底部滚动集合视图时,将调用上述委托方法。然后,我使用contentOffSet来获取沿X轴滚动的距离。我将其映射到标题标签的宽度(硬编码为75.0)以计算必须滚动集合的距离。希望可以改进它以达到您的目的,但是我敢肯定,那里有更好的方法:)

enter image description here