2017-05-08 131 views
0

我试图在故事板中解决这些约束。我目前有一个容器视图,它有一些完美的约束和定位。它根据屏幕大小等调整大小。它完美的作品。iOS故事板约束条件不能按预期运行

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

enter image description here

所以应该占据整个视图控制器。在该滚动视图的内部,我有很多元素,按钮,文本字段,标签等。例如,我有一个固定在视图顶部的文本字段(Top Space to Superview 0)。我也有拖尾和领先的空间超级视图设置为0.

如果我将视图控制器从Freeform更改为Fixed我期望滚动视图更改大小(它的确如此),我期望它将宽度设置为该文本字段与滚动视图和视图的宽度相同(不)。它保持宽度为306.即使是它被设置为拖尾并将空间设置为超级视图设置为0.

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

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

有关如何实现此目的的任何想法?

+1

滚动视图的contentSize被应用到其内容的限制设置。因此,如果您希望滚动视图的*内容*根据视图大小进行更改(而不是滚动视图的大小和方向),则必须设置约束条件和/或重新定位*内容元素*以执行此操作。 – DonMag

+0

@DonMag我不确定我是否理解。在文本字段中,我有'尾随和领先的空间到超视图设置为0'。你能提供更多关于如何解决这个问题的细节?我必须添加或更改哪些限制才能使其工作?因为我非常肯定'超级视图设置为0的拖尾和前导空间应该可以工作,而不是这样,我根本不理解。 –

+0

文本字段和其他视图不是'UIScrollView'的直接子节点,不受它的大小控制。他们是内容视图的子节点,它位于滚动视图的内部和“下方”。它们的约束是相对于该内容视图设置的,如果你想让它们重新布局,你将不得不改变contentView。您还必须更改滚动视图的contentSize以匹配新内容视图的边界。 –

回答

1

假设你的布局类似于此:

enter image description here

较小,淡蓝色的视图控制器是具有固定到零一路走去滚动型。

左上方的标签被钉在主导:0和上:0

右下角的标签在追踪固定:0和底部:0

的这些约束所有的4相对于的SuperView - 意思是ScrollView。

您还需要对Bottom Right标签的Y位置约束 - 在这种情况下,我从顶部左标签获得了435“垂直间距”。

在这一点上,一切都按照您现在看到它的方式工作。我已经在Storyboard中设置了7+ ...如果我在7+上运行它,它完全符合“开放”。但是......如果我以5秒的速度运行它,右下角的标签位于右侧,我们会进行水平滚动。

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

所以,用右下角的标签选择,你应该看到这一点:

enter image description here

+0

我应该加...这似乎是一个尴尬的结构。如果你想在“容器视图”区域滚动内容,我认为如果你只是有一个滚动视图,而不是一个容器视图,管理会更容易。 – DonMag

+0

完美!看起来像添加尾部空间来查看工作!感谢您的帮助。我做这个容器视图的原因是因为我有滚动视图下方和上方的元素。这是目前围绕它的最简单的方法。我通常不会问这个问题,但最近我在布局和故事板方面遇到了很多问题。仍然有些困惑。如果你想看看我另一个非常相似的问题,但是从另一个角度来看,最值得赞赏的是哈哈。 http://stackoverflow.com/questions/43835290/ios-scroll-view-allows-scrolling-past-content –