我有点受Swift和Xcode 11中的ScrollView的困扰。
我的目标是使用带有标签和文本字段的简单ScrollView。每个标签都描述了文本字段的用途。例如,有一个标签“名称”,因此您必须在标签下的文本字段中输入您的名称。为此,我需要ScrollView,因为我正在编码的App需要更多信息。当我尝试将其放入ScrollView时,不断出现以下错误: “可滚动内容的大小与ScrollView不明确”。
为了寻求帮助,我搜索了互联网,例如发现了以下问题:UIScrollView Scrollable Content Size Ambiguity。 不幸的是,它没有解决我的问题。因此,我决定创建一个包含以下内容的小型测试项目: -我创建了一个项目作为单视图应用程序 -我向ViewController添加了ScrollView -我在画布上单击了约束按钮 -我选择了0,0,0,0作为开头/顶部/尾部/底部。 -我点击了“添加4个约束 -现在出现警告。 ScrollView也没有调整为ViewController的大小...我不知道为什么。 -我在ScrollView中添加了UIView并设置了相同的约束,这次是根据ScrollView。 -UIView(内容视图)有一个额外的约束:与根视图的宽度相等 -现在,我添加了两个按钮,一个带有文本“ Hello”,另一个带有“ world”。 -“ hello”按钮收到以下限制:开头,结尾和顶部分别为16和30的固定高度。 -“世界”按钮具有以下约束:从16到底部,领先,落后和超过1000,因此您可以滚动ScrollView。
所有这些步骤之后,错误仍然存在,如果我运行该应用程序,则“ hello”-按钮位于屏幕顶部,而“ world”-按钮位于底部,并且我无法滚动。 / p>
也许有人可以帮助我解决此问题。我期待每一个答案!谢谢您的提前帮助!
答案 0 :(得分:1)
这是对我有用的把戏:
将ScrollView添加到所需的ViewController。
在“大纲”中选择它并打开其大小检查器。
取消选中“内容布局指南”选项。
现在将ScrollView的前导/顶部/尾部和底部约束设置为0。
添加UIView并将其前导/顶部/尾部和底部也限制为0。
向UIView添加相同的宽度约束。 (宽度必须等于ViewController中视图的宽度,这样就可以避免水平滚动。)
如果UIView中的每个元素都垂直链接,则警告将消失。这意味着,顶部元素对视图顶部及其下的元素具有约束,依此类推。最后一个元素需要约束到视图的底部。
如果按照此步骤进行操作,则可以使用ScrollViews。这样,您还可以在底部添加任意数量的内容,并且ScrollView将动态扩展。
我希望我解释得足够好。
答案 1 :(得分:0)
听起来您走对了,而且真的很近。
第一部分绝对正确-添加ScrollView并将其固定为零,以实现顶部,尾部,底部和前导约束。这样就可以占据整个屏幕。
然后将一个普通的旧UIView放到ScrollView中,并将其顶部,尾部,底部和前导约束固定到ScrollView(再次全部设为零)。然后,将UIView设置为与ScrollView具有相同的宽度。最后一件事是将UIView的高度设置为与ScrollView的高度相等,但是您要更改一件事:将此约束的优先级设置为低(250)。基本上,这就是允许UIView超过ScrollView的大小的原因,因此您可以滚动。
然后,您要做的就是在UIView中添加按钮等,以便将它们相对于按钮而不是ScrollView放置在其上,并根据需要固定或对齐它们。
答案 2 :(得分:0)