我是一个非常新的iOS开发人员,我第一次需要滚动视图。我需要设计的页面有点复杂。由于我正在努力使其正确布局,我决定创建一个超级简单的场景,这样我就可以确保我理解如何使UIScrollViews工作。显然它没有帮助,因为事情不起作用,我在遵循几个教程后陷入困境。
我正在使用Xcode 8.1和Swift 3。
这篇文章末尾的截图。
我有一个场景,其中包含一个滚动视图和一个包含两个标签的子视图。我已将标签设置为相距约700pt,以尝试进行滚动。没有任何滚动,你只能看到第一个标签。此外,子视图不会扩展为全高。
您可以在屏幕截图中看到我的滚动视图有限制将其固定到超视图的两侧。
子视图也一样。
标签约束将它们放置在子视图中并且相互之间相距700pt。我认为这会给视图提供滚动所需的高度。没有约束错误。
我希望红色的儿童视图填满垂直空间,然后滚动。在这一点上,只要有东西在滚动,我就会采用任何布局。但没有什么,我没有得到什么?
截图:
(因链接限制而删除,因为我仍然是新的SO用户)
编辑(6/12/16):
我已经做了一些改变并且离得更近了。首先,我向其他人建议将其中一个标签设置为与滚动视图相等的高度。这现在给我“反弹”效果,这意味着东西是滚动的;但是,我们仍然只处理一个内容屏幕,因为下面隐藏的第二个标签被剪掉了。
这就是事情的立场:
edited hierarchy
edited screenshot
答案 0 :(得分:0)
ScrollViews特别之处在于他们想明确知道它们应该滚动多少。我发现处理此问题的最佳方法是使以下层次结构具有一些约束:
-Scroll View
-Content View
-View (constrained to top, bottom, leading, trailing anchors)
-Your other views (e.g. Label)
通过让一个View位于内容视图下面然后包含该视图中的所有其他视图,ScrollView会知道它应该滚动多少(它只使用一个子视图的大小)不管你在孩子里面有多少东西。
让我看看我是否可以从我的一个项目中拍摄一张示例图片。在此期间,请尝试使用此层次结构,并告诉我它是否适合您。您可能会将Label限制在子视图的顶部和前导锚点,然后将高度限制为高于屏幕的高度(例如1000个单位)。
如果您有任何问题,请与我们联系。
编辑:下面的示例层次结构
答案 1 :(得分:0)
在故事板中使用UIScrollView
时,您需要确保滚动视图能够计算其内容的大小。如果您没有足够的约束,那么您将在Interface Builder中收到错误:
可滚动内容大小歧义
单击此错误上的“信息”图标将告知您需要触摸滚动视图的所有侧面的约束,并确保您可以从左到右和从上到下跟踪连续的约束线
无论是否添加了内容视图,都可以实现此目的。我将向您展示如何在滚动视图中没有内容视图的情况下执行此操作,因为这样的约束更少,因此更少键入。