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

17

UIHorizontalStackView和纵向的集合视图(也称为垂直stackview)之间有什么区别?

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

UIStackView可以做到什么,而集合视图无法做到?


2
你应该看一下 http://www.raywenderlich.com/78550/beginning-ios-collection-views-swift-part-1 来了解CollectionView,以及 http://www.raywenderlich.com/114552/uistackview-tutorial-introducing-stack-views 来了解iOS 9.0中发布的UIStackView。 - Mehul Chuahan
5个回答

20

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

堆栈视图基本上是该功能的简化和专业版本。它取消了集合布局的灵活性,而换取了一个简化的界面。

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

堆栈视图也是完全在接口生成器中创建的容器视图的非常轻量级的选项,并且不需要代码。通过使用它管理的子视图的内在内容大小来流动布局,从而用堆栈视图替换了大量自动布局约束。您还可以非常有效地嵌套堆栈视图以形成大多数表格类型布局。


18

集合视图包含单元格,用于数据展示。堆栈视图是在容器内布局视图的一种方式。 堆栈视图不像集合视图那样使用代理与数据进行交互。 集合视图以数据为中心,而堆栈视图则专注于布局。


13
  1. UICollectionView类似于网格布局,而UIStackView只适用于1维:垂直或水平。

UICollectionView类似于UITableView,但它支持多个单列布局。

集合视图与表视图具有相同的常规功能, 只是集合视图能够支持不止单列布局。集合视图支持可定制的布局, 可用于实现多列网格、平铺布局、循环布局等等。如果需要,你甚至可以动态更改集合视图的布局。

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

  1. 对我来说,使用StackView,您可以获得“自动布局”功能,例如:将4个视图放入Stack中,该组件将根据它们的大小决定如何在屏幕上呈现这些视图。

3
这并没有真正回答这个问题;一个集合视图可以轻松地配置为单行或单列。 - Caleb
我回答第一个问题。 - Duyen-Hoa
3
你可以将一组数据配置成表格中的单行或单列,但是你不能原生地将一个StackView配置为多行或多列。 - Duyen-Hoa

4

集合视图是更为复杂的 UI 元素,需要一个数据源对象和布局等。

栈视图似乎是替代多个元素应用多个约束来进行按钮堆叠或表单中标签和文本框排列等技巧的方式。

栈视图也没有委托,并且没有选择项或类似机制。


0
如果你在想为什么会有这两个看起来非常相似的选项 - 有时候你会创建一个自定义的单元格(tableview或collectionview),并添加另一个tableview或collectionview作为子视图 - 那么你一定会喜欢了解UIStackView的工作原理...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接