UIHorizontalStackView
和Collection View(Also Vertical stackview)之间的区别是什么?
collectionView
不能是水平和垂直的吗?为什么人们会同时使用?
一个UIStackView
做什么,一个集合视图不能?
是的,使用流布局或自定义布局的集合视图可以是垂直的或水平的。当使用流布局时,很容易配置一列项目,这些项目都设置为其固有的内容大小。
堆栈视图基本上是一个修剪和专门的版本。它剥夺了集合布局的灵活性,作为回报,它给了你一个流线型的界面。
根据您的用例,您可能不需要集合视图的复杂性。还有一些不错的小功能,比如如果你有一个选项列表要显示,但有些不适合所有情况,那么你可以隐藏那些不适合的,堆栈视图会处理它。在集合视图中隐藏项需要更多的配置。
Stack视图对于完全在接口构建器中创建的容器视图来说也是一个非常轻量级的选项,不需要代码。通过这种方式,堆栈视图通过使用子视图的内在内容大小来管理布局,从而取代了许多自动布局约束。您还可以非常有效地嵌套堆栈视图以形成大多数表格类型的布局。
集合视图具有单元格并处理数据表示。堆栈视图是在容器内布局视图的一种方式。堆栈视图无法像集合视图处理委托那样处理数据。集合视图以数据为中心,堆栈视图以布局为中心。
-
UICollectionView就像一个网格,UIStackView只有一个维度:垂直或水平。
UICollectionView类似于UITableView,但它支持的不仅仅是单列布局。
集合视图提供与表视图相同的通用功能除了集合视图能够支持的不仅仅是单列布局。集合视图支持可定制的布局可以用来实现多列网格,平铺布局,圆形布局,以及更多。你甚至可以改变a的布局集合视图
和
UIStackView类为布局提供了一个流线型的接口列或行中的视图集合
- 对于我来说,使用StackView,你受益于"自动布局"功能,例如:你在Stack中放置4个视图,该组件将决定这些视图如何在屏幕上显示,取决于它们的大小。
集合视图是更复杂的UI元素,需要DataSource
对象和布局等。
堆栈视图似乎是一个技巧的替代品,你必须应用多个约束的几个元素来做(说)一堆按钮,或安排标签和文本字段的形式。
堆栈视图也没有委托,也没有选择项目或类似的机制。
如果你问自己为什么有这两个选项,它们看起来非常相似-有时你会创建一个自定义单元格(tableview或collectionview),并将添加另一个tableview或collectionview作为子视图-然后你会喜欢知道UIStackView是如何工作的....