iOS 故事板约束未按预期运行

iOS Storyboard Constraints Not Operating As Expected

我正试图在我的情节提要中修复这些限制。我目前有一个容器视图,它具有一些完美的约束和定位。它根据屏幕尺寸等调整大小。它完美运行。

链接到该容器视图的视图控制器当前设置为 Freeform,宽度为 306,高度为 315。在该视图控制器内部,我有一个具有以下约束的滚动视图。

所以它应该占据整个视图控制器。在该滚动视图中,我有很多元素、按钮、文本字段、标签等。例如,我有一个固定到视图顶部的文本字段(Top Space 到 Superview 0)。我也将 superview 的尾部和前导 space 设置为 0.

如果我将视图控制器从 Freeform 更改为 Fixed,我希望滚动视图改变大小(确实如此),并且我希望它将该文本字段的宽度设置为与滚动视图和视图的宽度相同(不是)。它保持 306 的宽度。即使它被设置为尾随和前导 space 到 superview 设置为 0.

这会在 iPhone 4S 等设备中造成问题。我希望此视图的元素在宽度方面缩小以适合该容器视图。但它只允许水平滚动。

我想允许垂直滚动,因为它是一个表单,并且有很多表单元素等等。因此,对于较小的设备,他们应该能够向下滚动以查看所有元素。但我希望元素在宽度方面缩小或调整以适应较小的设备。

关于如何实现这一点有什么想法吗?

假设您的布局与此类似:

较小的浅蓝色 ViewController 有一个始终固定为零的 ScrollView。

左上角标签固定在前导:0 和顶部:0

右下标签固定在尾部:0 和底部:0

所有 4 个约束都与 SuperView 相关 - 即 ScrollView。

您还需要右下角标签的 Y 位置约束 - 在本例中,我从左上角标签获得 435 "vertical spacing"。

此时,一切都按照您现在看到的方式运行。我在 Storyboard 中为 7+ 设置了它……如果我在 7+ 上 运行 它,它正好适合 "opening"。但是...如果我 运行 它在 5s 时,右下角的标签会偏向右侧,我们就会水平滚动。

要解决此问题,您需要向右下标签添加 另一个 尾随约束,但使其相对于持有 ScrollView 的视图。

因此,选择右下标签后,您应该会看到: