14

aUIHorizontalStackView和 Collection View(也是 Vertical stackview)有什么区别?

不能collectionView水平和垂直吗?为什么人们会同时使用两者?

UIStackView集合视图不能做什么?

4

5 回答 5

17

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

堆栈视图基本上是一个修剪和专门的版本。它消除了集合布局的灵活性,并为您提供了一个流线型的界面。

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

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

于 2015-06-10T13:50:51.770 回答
17

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

于 2015-06-12T02:32:10.817 回答
11
  1. UICollectionView 就像一个网格, UIStackView 仅适用于一维:垂直或水平。

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

集合视图提供与表视图相同的通用功能,只是集合视图能够支持的不仅仅是单列布局。集合视图支持可用于实现多列网格、平铺布局、圆形布局等的可定制布局。如果需要,您甚至可以动态更改集合视图的布局。

对比

UIStackView 类提供了一个简化的界面,用于在列或行中布置视图集合

  1. 对我来说,使用 StackView,您将受益于“自动布局”功能,例如:您将 4 个视图放入 Stack,该组件将根据它们的大小决定这些视图在屏幕上的显示方式。
于 2015-06-10T13:52:45.180 回答
4

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

堆栈视图似乎可以替代您必须对多个元素应用多个约束以执行(例如)一堆按钮或为表单排列标签和文本字段的技巧。

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

于 2015-06-11T20:49:18.543 回答
0

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

于 2015-11-21T11:27:48.537 回答