0

我无法UIScrollView尊重我在界面生成器中设置的约束。

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

包含UIScrollView一个.UIView

上的约束UIScrollView

滚动视图约束

上的约束UIView

在此处输入图像描述

我已经阅读了文档,因此设置如下:

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

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

我错过了什么?

4

1 回答 1

0

每次我尝试在 Xcode 4 的 Interface Builder 中使用约束做一些稍微复杂的事情时,我最终都放弃了,要么在代码中编写约束,要么切换回 springs'n'struts 和layoutSubviews(通常在 Xcode 崩溃几次之后)次)。

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

在这个答案中更详细地描述了这种方法。

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

于 2013-06-30T04:23:21.960 回答