我想实现以下视图,在该视图中可以完全滚动视图,并容纳2个具有无限滚动内容的不同滚动视图(主视图和辅助视图)。这代表了我想要的确切东西。
蓝色框是滚动视图,我希望滚动以这种视差方式水平发生。
我能够以正确的方式实现上述视差,但是每个标题都包含自己的collectionview
。实现此功能时,我无法无限滚动。
如何通过无限滚动完全实现相同的行为?
答案 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)以计算必须滚动集合的距离。希望可以改进它以达到您的目的,但是我敢肯定,那里有更好的方法:)