Swift: 垂直滚动中水平滚动中的垂直滚动

Swift: Vertical scroll within horizontal scroll within vertical scroll

我正在尝试创建类似于 Instagram 个人资料页面的滚动行为,即。顶部的垂直滚动视图(例如姓名、头像等),下方是图像网格,可以左右平移以显示更多图像集,同时还能够垂直滚动。

郑重声明,我已经阅读了大量与此非常相似的帖子,但我还没有找到任何解决我在下面提出的滚动问题的帖子。

这是我目前的设置:

注意:绿色scrollview的宽高与红色相同。

此设置让我了解了大部分内容,但如果您向上滑动并放开红色滚动视图,它不会触发绿色滚动视图滚动。相反,一旦绿色滚动视图占据了整个屏幕,就无法返回到红色滚动视图,因为它也没有被触发。

当红色滚动视图滚动超过 header 的高度时,我通过 enabling/disabling 绿色滚动视图取得了一些成功,但它非常笨拙。

  func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {

     let translation = scrollView.panGestureRecognizer.translation(in: scrollView.superview)
     var isScrollingDown = translation.y > 0
     let offset = scrollView.contentOffset.y

     if isScrollingDown, offset <= scrollHeight { //scrollHeight is equal to the height of the header cell
         greenScrollView.isScrollEnabled = false
     }
     else if !isScrollingDown, offset >= scrollHeight {
         greenScrollView.isScrollEnabled = true
     }
 }

这个解决方案是否朝着正确的方向发展,或者是否有更好的方法来实现我所缺少的?

我为此苦苦挣扎了一段时间。我遇到了这个并且效果很好。

https://github.com/OfTheWolf/TwitterProfile

我创建了一个我认为与 Harrison Senesac 给出的示例相同(也支持自动布局)的存储库,只是我的存储库目前只有水平滚动部分。它旨在成为一个与 Harrison 给出的示例不同的库(它不能很好地与 NavigationController 或底部 TabBar 一起工作,因为它的 UIScrollView 使用框架,而我的使用自动布局)。

https://github.com/YoomamaFTW/infinite-view-controllers

基本上,对于未来的用户来说,重点是使用看起来像 PageController 的 UIScrollBar。每个“页面”只是一个视图控制器,您可以在增加内容大小的宽度的同时添加到 UIScrollBar。

我已经实现了一些功能(比如显示两张图片的集合视图和您添加的 gif 中的一行),但这些将在星期六添加,因为我没有时间添加它我的应用程序和存储库。