使用自动布局滚动内容
该项目是一个完全在 Interface Builder 中完成的自包含示例。你应该能够在 10 分钟或更短的时间内完成它。然后,你可以将你学到的概念应用到你自己的项目中。
https://i.stack.imgur.com/L4puB.gif
在这里我只使用 UIView
s,但它们可以代表你喜欢的任何视图(即按钮,标签等)。我还选择了水平滚动,因为这种格式的故事板截图更加紧凑。但是,垂直滚动的原理是相同的。
关键概念
UIScrollView
应该只使用一个子视图。这是一个’UIView’,用作内容视图,用于保存你想要滚动的所有内容。- 使内容视图和滚动视图的父级具有相等的水平滚动高度。 (垂直滚动的宽度相等)
- 确保所有可滚动内容都具有设置的宽度并固定在所有侧面。
开始一个新项目
它可以只是一个单一的视图应用程序。
故事板
在这个例子中,我们将创建一个水平滚动视图。选择 View Controller,然后在 Size Inspector 中选择 Freeform。制作宽度 1,000
和高度 300
。这只是让我们在故事板上添加了可以滚动的内容。
添加滚动视图
添加 UIScrollView
并将所有四个边都固定到视图控制器的根视图。
添加内容视图
将 UIView
作为子视图添加到滚动视图。*这是关键。*不要尝试在滚动视图中添加大量子视图。只需添加一个 UIView
。这将是你要滚动的其他视图的内容视图。将内容视图固定到四个方面的滚动视图。
相等高度
现在,在文档大纲中,Command 单击内容视图和滚动视图的父视图,以便同时选择它们。然后将高度设置为相等(控制</ kbd 从内容视图拖动到滚动视图>)。*这也是关键。*因为我们是水平滚动,滚动视图的内容视图将不知道它应该有多高,除非我们以这种方式设置它。
注意:
- 如果我们将内容垂直滚动,那么我们将内容视图的宽度设置为等于滚动视图的父宽度。
添加内容
添加三个 UIView
s 并给它们所有约束。我用了 8 点的余量。
约束:
- 绿色视图:固定顶部,左侧和底部边缘。宽度为 400。
- 红色视图:固定顶部,左侧和底部边缘。使宽度为 300。
- 紫色视图:固定所有四个边缘。无论剩余空间是什么,都要做宽度(在这种情况下为 268)。
*设置宽度约束也是关键,*以便滚动视图知道其内容视图的宽度。
成品
就这样。你现在可以运行你的项目。它的行为应该与此答案顶部的滚动图像相似。