为什么我的uicollectionview不会与底层的uiscrollview一起移动?

时间:2018-02-14 15:26:22

标签: ios swift xcode uiscrollview uicollectionview

我有一个用Xcode 9.2构建的简单的iOS应用程序,用Swift 4编写。我有一个工作的垂直滚动视图,其上面有一个工作的,水平滚动的集合视图。滚动就像我一样,除了在垂直滚动时集合视图不与其余内容一起移动(参见截图,其中集合视图保持在相同的绝对位置,无论是滚动到底层视图的顶部还是底部)

screenshot: scrolled to the top

screenshot: scrolled to the bottom

screenshot: views hierarchy

我尝试按照this question的第二个答案中的步骤操作,但是当我按照描述向集合视图添加约束时,集合视图停止出现在模拟中,垂直滚动停止工作。

如果可能的话,我希望在滚动时让集合视图与其余内容一起上下移动。

1 个答案:

答案 0 :(得分:0)

您的约束中可能存在问题:

  1. 删除所有约束并让自动布局完成工作
  2. 尝试删除scrollView和collectionView之间的视图。
  3. 超级提示:将背景颜色添加到视图中,它将允许您以更好的方式进行调试。

    修改

    1. 将UIScrollView添加到Superview并设置四个约束(前导/尾随/顶部/底部)。
    2. 将一个UIView添加到Scrollview;将四个约束设置为Scrollview,并在需要调试时将backgroundColor设置为UIView
    3. 在UIView和Scrollview之间添加“等宽”+“相等高度”约束
    4. 将您想要的任何元素添加到上次创建的UIView
    5. 运行该应用,您的所有商品都应该可以滚动。
    6. 添加自动布局的最终​​缺失约束以正常工作:
      • UIView中的所有元素都应该对UIView有前导+尾随约束(水平居中也可以是一个很好的选择)
      • 从顶部开始,在元素之间放置垂直约束。在你的情况下,“top”标签对UIView有一个“顶部约束”,而“bottom”标签对UIView有一个“底部约束”。
      • 设置项目的高度限制,以便scrollview具有contentSize
    7. 以下是结果的屏幕截图:

      xcode screenshot