iOS - UIScrollView 不滚动,但显示了滚动条
iOS - UIScrollView not scrolling, though scroll bar is shown
我有一个滚动视图,里面有一个名为 "Content View" 的 UIView,其中包含我的所有元素。
内容视图等于滚动视图的顶部、底部、前导和尾部。也等于它的宽度和高度。
我也加了self.scrollView.contentSize = self.contentView.frame.size
在 ViewDidLoad.
当我滚动时,我可以看到一个滚动条在侧面上下移动,根据滚动条,页面长度似乎是正确的,但内容本身不会滚动,正如您在此处看到的那样:
我做错了什么?
谢谢!
The Content view is equal to the Scroll view's top, bottom, leading
and trailing. Also equal its width & height.
您需要删除宽度和高度限制。顶部、底部、前导和尾随应保留。此外,从 viewDidLoad 中删除该 contentSize 设置。
我假设你想要垂直滚动。在这种情况下,您应该将 contentView 的宽度约束设置为等于 View 的宽度(不是 scrollView,而是 View,它是层次结构的根)。
假设正确设置了 contentView 子项的垂直约束,那应该可以解决问题。
我必须做的第一件事就是 user3199693 所说的:从 viewDidLoad 中删除该行(这使我看到的错误滚动条消失了)。正如他所说,我还设置了 contentView 的宽度约束等于 top View 的宽度。
很好,但还是没有解决问题。内容视图的 高度 与顶部视图的帮助相等。
灵感来自 here。
我 运行 解决了滚动条会滚动但内容不会滚动的这个问题(或非常相似的问题)。这让我发疯了一段时间,因为在 Interface Builder 中,滚动视图内的所有内容似乎都得到了正确的约束。最后,我注意到滚动视图容器中的顶部项目(容器 = 包含我所有视图的 UIScrollView 内部的视图)通过与滚动视图外部的视图对齐而被限制在顶部。
一旦我删除了将顶部与 ScrollView 的外部视图对齐的约束,而是将其与 UIScrollView 中的主容器对齐,一切正常。希望这有助于万一有人遇到这个问题,而其他提到的解决方案没有解决它。
默认情况下,滚动视图启用内容布局指南。因此,当我们将内容视图(滚动视图内的主视图)固定在所有 4 个边上且等宽和等高(优先级较低)时,它采用 Frame Layout Guide 作为顶部约束,这是问题的根本原因,其中只有滚动指示器移动而不是整个内容。
您可以从滚动视图大小检查器中取消选中内容布局指南。或者,如果您想使用它,请将顶部约束更改为 Content Layout Guide 而不是 Frame Guide Layout 并且它起到了魅力。请参考以下截图。
我有一个滚动视图,里面有一个名为 "Content View" 的 UIView,其中包含我的所有元素。
内容视图等于滚动视图的顶部、底部、前导和尾部。也等于它的宽度和高度。
我也加了self.scrollView.contentSize = self.contentView.frame.size
在 ViewDidLoad.
当我滚动时,我可以看到一个滚动条在侧面上下移动,根据滚动条,页面长度似乎是正确的,但内容本身不会滚动,正如您在此处看到的那样:
我做错了什么?
谢谢!
The Content view is equal to the Scroll view's top, bottom, leading and trailing. Also equal its width & height.
您需要删除宽度和高度限制。顶部、底部、前导和尾随应保留。此外,从 viewDidLoad 中删除该 contentSize 设置。
我假设你想要垂直滚动。在这种情况下,您应该将 contentView 的宽度约束设置为等于 View 的宽度(不是 scrollView,而是 View,它是层次结构的根)。
假设正确设置了 contentView 子项的垂直约束,那应该可以解决问题。
我必须做的第一件事就是 user3199693 所说的:从 viewDidLoad 中删除该行(这使我看到的错误滚动条消失了)。正如他所说,我还设置了 contentView 的宽度约束等于 top View 的宽度。
很好,但还是没有解决问题。内容视图的 高度 与顶部视图的帮助相等。
灵感来自 here。
我 运行 解决了滚动条会滚动但内容不会滚动的这个问题(或非常相似的问题)。这让我发疯了一段时间,因为在 Interface Builder 中,滚动视图内的所有内容似乎都得到了正确的约束。最后,我注意到滚动视图容器中的顶部项目(容器 = 包含我所有视图的 UIScrollView 内部的视图)通过与滚动视图外部的视图对齐而被限制在顶部。
一旦我删除了将顶部与 ScrollView 的外部视图对齐的约束,而是将其与 UIScrollView 中的主容器对齐,一切正常。希望这有助于万一有人遇到这个问题,而其他提到的解决方案没有解决它。
默认情况下,滚动视图启用内容布局指南。因此,当我们将内容视图(滚动视图内的主视图)固定在所有 4 个边上且等宽和等高(优先级较低)时,它采用 Frame Layout Guide 作为顶部约束,这是问题的根本原因,其中只有滚动指示器移动而不是整个内容。
您可以从滚动视图大小检查器中取消选中内容布局指南。或者,如果您想使用它,请将顶部约束更改为 Content Layout Guide 而不是 Frame Guide Layout 并且它起到了魅力。请参考以下截图。