“可滚动内容的大小与“ ScrollView”不明确

时间:2020-02-13 20:53:01

标签: ios swift

我有点受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>

也许有人可以帮助我解决此问题。我期待每一个答案!谢谢您的提前帮助!

3 个答案:

答案 0 :(得分:1)

这是对我有用的把戏:

  1. 将ScrollView添加到所需的ViewController。

  2. 在“大纲”中选择它并打开其大小检查器。

  3. 取消选中“内容布局指南”选项。

  4. 现在将ScrollView的前导/顶部/尾部和底部约束设置为0。

  5. 添加UIView并将其前导/顶部/尾部和底部也限制为0。

  6. 向UIView添加相同的宽度约束。 (宽度必须等于ViewController中视图的宽度,这样就可以避免水平滚动。)

  7. 如果UIView中的每个元素都垂直链接,则警告将消失。这意味着,顶部元素对视图顶部及其下的元素具有约束,依此类推。最后一个元素需要约束到视图的底部。

如果按照此步骤进行操作,则可以使用ScrollViews。这样,您还可以在底部添加任意数量的内容,并且ScrollView将动态扩展。

我希望我解释得足够好。

答案 1 :(得分:0)

听起来您走对了,而且真的很近。

第一部分绝对正确-添加ScrollView并将其固定为零,以实现顶部,尾部,底部和前导约束。这样就可以占据整个屏幕。

然后将一个普通的旧UIView放到ScrollView中,并将其顶部,尾部,底部和前导约束固定到ScrollView(再次全部设为零)。然后,将UIView设置为与ScrollView具有相同的宽度。最后一件事是将UIView的高度设置为与ScrollView的高度相等,但是您要更改一件事:将此约束的优先级设置为低(250)。基本上,这就是允许UIView超过ScrollView的大小的原因,因此您可以滚动。

然后,您要做的就是在UIView中添加按钮等,以便将它们相对于按钮而不是ScrollView放置在其上,并根据需要固定或对齐它们。

答案 2 :(得分:0)

共添加9个约束

1 - 4:ScrollView 到 Superview(前导、顶部、尾部和底部)

5 - 8:内容视图到内容布局指南(前导、顶部、尾部和底部)

9:内容视图宽度等于框架布局指南的宽度。

但是当您执行此操作时(右键单击拖放)7 和 8 约束(内容布局指南的尾部和底部约束)将具有恒定值。 (检查下图)。 只需将它们归零即可。现在它起作用了。

enter image description here