将自动布局约束应用于UIScrollView时,如果滚动视图布局为全屏,则会给出错误消息,但如果它具有“边距”则不会给出错误消息。我将用2个例子说明。在这两个示例中,我将前导和尾随空间应用于超视图,并将顶部和底部空间添加到布局指南。
自动布局约束为蓝色,一切都按顺序
我伸出滚动视图并应用与示例1中相同的规则,但现在其中一个约束最终不同。 “顶部空间到顶部布局指南”添加为“垂直空间 - (-548) - 顶部布局指南 - 滚动视图”。 然后Xcode抱怨我的滚动视图需要“y位置或高度的约束”。
任何人都可以解释为什么会这样吗?
答案 0 :(得分:1)
不幸的是,我认为这是Xcode 5中Interface Builder中的一个错误。当您尝试从视图顶部创建约束到顶部布局指南时,IB通常(错误地)从底部添加约束顶部布局指南的视图。
要解决此问题,请先尝试调整scrollView的大小,使其顶部边缘在viewController中低得多:
然后尝试从scrollView拖动到viewController,并向顶部布局指南添加约束。然后,您可以选择此约束并在检查器中调整常量,以使scrollView与viewController的顶部对齐:
或者,在代码中创建约束:)
答案 1 :(得分:0)
只需选择滚动视图并手动创建顶部,左侧,底部和右侧边缘的约束。
这里发生的事情是自动创建的约束没有意义,因为它们没有完全定义滚动视图的大小,只有它的位置。
答案 2 :(得分:0)
在滚动视图小于包含视图的原始示例后,我注意到XCode实际上是在我的情况下添加了一个错误的约束,当我选择“顶部空间到顶部布局指南”时,它添加了一个“底部空间”顶部布局指南“具有较大负值的约束。我可以从你的第二个截图中看到类似的东西。
我的解决方案是按照您的示例使用小于其容器的UIScrollView。然后我手动拖出约束,调整UIScrollView的大小以适应容器。最后一步是使用错误的常量来获取现在正确的约束,并将它们全部设置为0。
希望有所帮助,我仍然在努力解决我遇到的问题,但我注意到这个阶段与你发布的相似。