【问题标题】:iOS - UIScrollView not scrolling, though scroll bar is showniOS - UIScrollView 不滚动,但显示滚动条
【发布时间】:2019-04-21 18:44:52
【问题描述】:

我有一个滚动视图,里面有一个名为“内容视图”的 UIView,它包含我的所有元素。

内容视图等于滚动视图的顶部、底部、前导和尾随。也等于它的宽度和高度。

我还加了self.scrollView.contentSize = self.contentView.frame.size 在 ViewDidLoad 中。

当我滚动时,我可以看到侧面有一个上下滚动的滚动条,根据滚动条,页面长度似乎是正确的,但内容本身并没有滚动,如您在此处看到的那样:

我做错了什么?

谢谢!

【问题讨论】:

  • 似乎内容不在scrollView中。 scrollView 在 contentView 之上,检查视图层次
  • 你能从滚动视图中删除安全区域并尝试一下吗?
  • 我同意@Janmenjaya 请发布您的完整视图层次结构
  • @Janmenjaya 我发布了完整的层次结构,你可以看到内容视图在滚动视图下缩进。
  • @Aakash 如何删除安全区域?

标签: ios objective-c xcode uiscrollview interface-builder


【解决方案1】:

默认情况下,为滚动视图启用内容布局指南。因此,当我们将内容视图(滚动视图内的主视图)固定在所有 4 个边上并且等宽和等高(优先级较低)时,它需要框架布局指南作为顶部约束,这是问题的根本原因,只有滚动指示器移动而不是整个内容。

您可以取消选中 Scroll View Size Inspector 中的 Content Layout Guides。或者,如果您想使用它,请将顶部约束更改为 Content Layout Guide 而不是 Frame Guide Layout,并且它起到了魅力。请参考下面的截图。

【讨论】:

    【解决方案2】:

    我遇到了这个问题(或非常类似的问题),滚动条会滚动,但内容没有。它让我发疯了一段时间,因为看起来滚动视图中的所有内容都在 Interface Builder 中得到了正确的约束。最后,我注意到滚动视图容器中的顶部项目(容器 = 包含我所有视图的 UIScrollView 内部的视图)通过与滚动视图外部的视图对齐而被限制在顶部。

    一旦我从 ScrollView 移除了将顶部与外部视图对齐的约束,而是将其与 UIScrollView 中的主容器对齐,一切正常。希望这有助于以防有人遇到此问题并且其他提到的解决方案无法解决它。

    【讨论】:

    • 难以置信 :D 3 小时的研究,这绝对是问题所在。非常感谢!
    【解决方案3】:

    我必须做的第一件事是 user3199693 所说的:从 viewDidLoad 中删除该行(这使我看到的错误滚动条消失了)。正如他所说,我还将 contentView 的宽度约束设置为等于顶部视图的宽度。

    这很好,但仍然没有解决问题。有什么帮助等于内容视图与顶视图的高度

    here得到这个想法。

    【讨论】:

      【解决方案4】:

      Content 视图等于 Scroll 视图的顶部、底部、前导 和尾随。 也等于它的宽度和高度。

      您需要删除宽度和高度限制。顶部、底部、前导和尾随应保持不变。另外,从 viewDidLoad 中删除 contentSize 设置。

      我假设你想要垂直滚动。在这种情况下,您应该将 contentView 的宽度约束设置为等于 View 的宽度(不是 scrollView 而是 View 的,它是层次结构的根)。

      这应该可以解决问题,假设 contentView 的子项的垂直约束已正确设置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-13
        • 2010-12-25
        • 2014-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-23
        • 1970-01-01
        相关资源
        最近更新 更多