如何停止界面生成器重置UIScrollView上的用户约束?

时间:2013-06-30 04:13:18

标签: xcode uiscrollview interface-builder autolayout

我无法让UIScrollView尊重我在界面构建器中添加的约束。

我需要做的就是在IB中设置滚动视图的内容大小。

UIScrollView包含一个UIView

UIScrollView上的限制:

Scroll View Constraints

UIView上的限制:

enter image description here

我已阅读the documentation,因此按照以下方式进行了设置:

  • UIScrollView有约束将其固定到超级视图,从而从外部定义其大小
  • UIView(内容)具有固定大小(通过宽度和高度限制)
  • UIView固定到UIScrollView,从而定义内容大小

然而,IB不会让我输入这些限制。如果我更改视图和滚动视图之间的“底部空间”约束(在图像中显示为-2196),为0(从而固定滚动视图的下边缘),则“顶部空间”约束将重置为非 - 零价值。反过来也是如此。 (我还没有在Xcode 5中尝试过,它对无效约束有一个更为理智的方法,因为当它感觉像它时它不会把你扔掉。)

我错过了什么?

1 个答案:

答案 0 :(得分:0)

每当我尝试在Xcode 4的Interface Builder中做一些稍微复杂的约束时,我最终放弃了,或者在代码中编写约束或者切换回spring'n'struts和{{1} (通常在Xcode崩溃几次之后)。

也就是说,还有另一种方法可以在IB中布置包含内容的滚动视图。只需使滚动视图与其内容大小一样大,并依赖视图控制器(或某些包含视图控制器)来调整滚动视图(或其超级视图)的大小,并让约束在运行时缩小滚动视图的框架。窗口的根视图控制器将始终将其视图的框架设置为屏幕大小,无论其在笔尖或故事板中的大小如何,并且调整大小沿视图层次结构向下流动。

我更详细地描述了这种方法in this answer

如果您的滚动视图的内容大小确实应该是2196点高,这可能不会那么好。在这种情况下,我没有更好的建议。