让ScrollView与Autolayout和Storyboard一起使用

时间:2017-04-25 14:48:21

标签: ios swift uiscrollview ios-autolayout

我正在尝试为我想要构建的应用程序制作一个非常简单的布局 - 但我似乎正在努力使用ScrollView并通过Storyboard使其工作。基本上我正在尝试构建如下:

template

我已经使用了几个教程完成了约束 - 但它要么不滚动,要么看起来不对。有什么建议吗?

enter image description here

我收到以下警告:

Warnings

5 个答案:

答案 0 :(得分:3)

在使用约束进行布局时,您必须为UIScrollView提供contentSize。

例如:

您可以将View的宽度设置为等于scrollView,因为这将提供scrollview内容的宽度。然后,提供内容高度,垂直布局红色和黄色视图,并使用它们来提供视图的高度。这意味着您必须为黄色视图提供初始高度,或者您可以使用提供intrinsicContentSize的视图来确定黄色视图高度,这样您就不必手动更改它。

另外我认为你必须删除redview top ==布局指南顶部,并添加redview top ==查看顶部和yellowview底部==查看底部

答案 1 :(得分:1)

设置视图的宽度和高度约束,该约束位于滚动视图内。

如果宽度固定,则添加约束使视图宽度等于Scrollview。

如果高度可变,则设置当前高度并将其优先级更改为750。

例如,在下图中,我设置了视图的宽度和高度。

请注意,如果高度是可变的,则View必须根据视图内容高度知道它的高度

enter image description here

答案 2 :(得分:1)

要让UIScrollView完美地运作,您需要做的是确保UIScrollView内的内容视图可以推断其高度始终 。我将UIScrollView的子视图称为内容视图。话虽这么说,你需要做的是:

  • UIScrollView添加前导,尾随,顶部和底部。在您的内容视图中,为UIScrollView添加一个前导,顶部,尾部和底部。现在Xcode应该抱怨缺少约束。你现在需要做的是在UIViewController的主视图中添加一个相等的高度和宽度约束,并提供250等于高度约束的优先级。
  • 现在为红色视图
  • 添加一个前导,顶部和尾随和固定高度约束
  • 现在在黄色视图中添加前导,尾随,顶部和底部。现在,您可以以编程方式设置黄色视图的高度或向其中添加内容,从而允许黄色视图推断其高度,从而使内容成为可能查看知道它的高度。

低优先级相等高度约束将为内容视图提供足够的约束,以便Xcode不会抱怨,并且由于优先级较低,如果内容的大小,它将会中断内部太大,无法完全显示在屏幕上。

注意:保持您的视图层次与原样相同。

答案 3 :(得分:0)

请记住,ScrollView中的视图必须具有明确的大小(使用scrollview布局它不要使其大小明确)。通常,您可以使用根视图或固定值布局视图的宽度。查看高度您还可以使用其中的视图修复值或布局(其中的视图必须具有明确的高度→视图的高度可以计算)。这是我的经验,希望它可以帮助你:))

答案 4 :(得分:0)

设置scrollView内部视图的高度和宽度。如果视图高度是固定的,则设置约束,对于具有可变高度的视图设置该视图的高度,并将其与viewController连接为NSLayoutConstrains并以编程方式更改,并使用

更新scrollView的高度

scrollView.contenSize.height = fixedViewHeight + variableViewHeight

也可以更改scrollview的高度。