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

时间:2017-05-08 18:23:41

标签: ios uiscrollview autolayout uistoryboard uicontainerview

我正在尝试在故事板中修复这些约束。我目前有一个容器视图,它具有一些完美的约束和定位。它根据屏幕尺寸等进行调整。它运作得很好。

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

enter image description here

所以它应该占用整个视图控制器。在滚动视图的内部,我有很多元素,按钮,文本字段,标签等。例如,我有一个固定在视图顶部的文本字段(顶部空间到Superview 0)。我还将superview的尾随和前导空间设置为0。

如果我将视图控制器从Freeform更改为Fixed,我希望滚动视图可以更改大小(它确实如此),我希望它将该文本字段的宽度设置为与滚动视图和视图相同的宽度(它没有)。它保持宽度为306.即使它被设置为尾随和超前视图的前导空间设置为0.。

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

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

关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:1)

假设您的布局与此类似:

enter image description here

较小的淡蓝色ViewController有一个ScrollView固定为零。

左上角标签固定在Leading:0和Top:0

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

所有这四个约束都与SuperView有关 - 这意味着ScrollView。

你还需要一个右下角标签的Y位置约束 - 在这种情况下,我从左上角标签得到435“垂直间距”。

此时,一切都按照你现在看到的方式运作。我在故事板中设置了7+ ...如果我在7+上运行它,它完全适合“开放”。但是......如果我在5s运行它,右下标签就在右边,我们得到水平滚动。

要解决这个问题,您需要将另一个 Trailing约束添加到Bottom Right标签,但要使其相对于持有ScrollView的View。

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

enter image description here