Xcode 7 中的 UIStackView 和 UICollectionView 有什么区别?

What's the difference between a UIStackView And A UICollectionView in Xcode 7?

UIHorizontalStackView 和集合视图(也是垂直堆栈视图)有什么区别?

一个collectionView就不能横着竖着吗?为什么人们会同时使用两者?

什么是 UIStackView 集合视图不能做到的?

是的,使用流布局或自定义布局的集合视图可以是垂直的或水平的。使用流布局时,配置单列项目非常容易,这些项目都设置为其固有内容大小。

堆栈视图基本上是 trim 的特殊版本。它剥夺了集合布局的灵活性,并在 return 中为您提供了一个简化的界面。

根据您的用例,您可能不需要集合视图的复杂性。还有一些不错的小功能,例如,如果您有一个要显示的选项列表,但有些选项并不适用于所有情况,那么您可以隐藏那些不适用的选项,堆栈视图将处理它。在集合视图中隐藏项目需要更多配置。

对于完全在界面生成器中创建且不需要代码的容器视图,堆栈视图也是一个非常轻量级的选项。通过这种方式,堆栈视图通过使用它管理的子视图的固有内容大小来替换许多自动布局约束来流动布局。您还可以非常有效地嵌套堆栈视图以形成大多数表格类型布局。

  1. UICollectionView 就像一个网格,UIStackView 仅适用于 1 个维度:垂直或水平。

UICollectionView 类似于 UITableView,但它支持的不仅仅是单列布局。

Collection views provide the same general function as table views except that a collection view is able to support more than just single-column layouts. Collection views support customizable layouts that can be used to implement multi-column grids, tiled layouts, circular layouts, and many more. You can even change the layout of a collection view dynamically if you want.

The UIStackView class provides a streamlined interface for laying out a collection of views in either a column or a row

  1. 对我来说,使用 StackView,您可以受益于 "AutoLayout" 功能,例如:您在 Stack 中放置 4 个视图,该组件将决定这些视图在屏幕上的呈现方式,具体取决于它们的大小。

集合视图是更复杂的 UI 元素,需要 DataSource 对象和布局等。

堆栈视图似乎可以替代一些技巧,在这些技巧中,您必须对多个元素应用多个约束才能完成(比如)一堆按钮,或者为表单安排标签和文本字段。

堆栈视图也没有委托,也没有用于选择项目或类似内容的机制。

集合视图具有单元格并使用数据表示。堆栈视图是一种在容器内布局视图的方法。堆栈视图无法像集合视图处理委托那样处理数据。集合视图以数据为中心,堆栈视图以布局为中心。

如果你问自己为什么有这 2 个选项,它们看起来非常相似 - 有时你会创建一个自定义 Cell(tableview 或 collectionview)并添加另一个 tableview 或 collectionview 作为子视图 - 那么你很想知道 UIStackView 是如何工作的....