2015-07-11 136 views
0

我试图让滚动视图根据此页面上子视图的大小调整大小。图片中对象的所有其他约束都可以正常工作。根据子视图的内容大小调整滚动视图

Imgur

当我添加约束到我的子视图搂向左侧,右侧,并在屏幕的底部(与子视图拥抱到分段控制的底部的顶部),然后更新帧,它使子视图的0

Imgur

我不能高度约束添加到子视图的高度,因为子视图的大小会动态变化取决于在其内容物的量,这将随后更改滚动视图的大小。

如何在不添加高度限制的情况下完成此操作?

回答

1

您的视图层次应该是这样的:

view hierarchy

创建的UIScrollView的一个子视图,我们将会把我们的内容的所有

内容视图必须的显式大小(或在界面构建器中设置的 中的占位符大小,并在运行时设置)。换句话说,您的内容 视图不能依靠滚动视图来获取其大小。但是,它可以依靠滚动视图外部的视图来获取其大小。

从苹果技术说明TN2154

  • 设置translatesAutoresizingMaskIntoConstraints为NO所涉及的所有视图 。

  • 位置以及与外部 滚动视图限制大小滚动视图。

  • 使用约束到 滚动视图中铺陈子视图,是确保约束绑的 滚动视图四边不靠滚动视图来获取它们的大小。

    UIScrollView And Autolayout

    Using UIScrollView with Auto Layout in iOS

+0

我很抱歉,但我很困惑你的答案。为什么我不能将子视图绑定到滚动视图的左侧和右侧,并将子视图的顶部绑定到分段控件的底部?我的层次结构像你说的那样结构化。滚动视图对视图的所有四个角都有约束。如果我将子视图的顶部绑定到滚动视图的顶部,则子视图将根据屏幕大小移动所有内容 –

+0

您可以共享您的视图层次结构和滚动视图和内容视图的约束,基本上您需要是1)将视图0滚动到所有边2)具有明确宽度和高度的内容视图(它可以基于内容视图内的视图计算)如果以正确的方式设置约束,Autolay会自动计算内容大小 – Aladin

+0

好吧,我开始明白你现在在说什么,但我想我只是不明白为什么Xcode会这样做,以便我需要在滚动视图顶部的另一个视图,看到滚动视图本身应该采取行动作为某种类型的内容容器。如何根据内容中的视图制作内容视图高度更改? –

0

尝试给Equl Heights & Equal Width约束你的子视图。

Equal Width & Equal Heights