在使用supplementViewOfKind的地方?

时间:2017-01-31 22:11:45

标签: ios swift uicollectionview uicollectionviewcell

我正在试图找出使用supplementaryViewOfKind的位置。我查看了有关SO的文档和其他一些问题,但我仍然无法理解它的作用。根据我的理解,它将被用作辅助 Headerview。

collectionView.registerClass(imageCell.self, forCellWithReuseIdentifier: "imageCell")

collectionView.registerClass(imageCell2.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "imageCell2"

我不能以这种方式注册imageCell2:

collectionView.registerClass(imageCell2.self, forCellWithReuseIdentifier: "imageCell2")

然后当我需要时,在cellForItemAtIndexPath我切换哪个单元格出现的情况?或者我不明白supplementaryViewOfKind

的存在目的

4 个答案:

答案 0 :(得分:2)

您最好查看这篇文章:

Collection View Programming Guide for iOS

Custom Layouts: A Worked Example部分中,您可以使用补充视图找到自定义布局的示例。

enter image description here

在上面的示例中,使用补充视图实现连接线。

您可以使用自定义布局以各种方式使用补充视图。

答案 1 :(得分:1)

  

我正在试图找出使用supplementViewOfKind的位置

布局可以定义其喜欢的补充视图类型,为您提供一种指定非普通单元格(项目)的方法。

一个很好的例子是UICollectionViewFlowLayout允许您询问节页眉和页脚的方式。它们是补充意见。特别是,它们是善意UICollectionElementKindSectionHeaderUICollectionElementKindSectionFooter的补充观点。请参阅the documentation

在我的拉丁应用程序的章节和章节列表中,章节(左边带有白色数字的黑条)是补充视图:

enter image description here

答案 2 :(得分:1)

最短的回答

观看此视频: https://developer.apple.com/videos/play/wwdc2012/205/

简短回答

补充视图与其名称一样,提供了需要正确显示某些数据的补充材料。细胞和补充观点可以彼此密切相关或彼此之间几乎没有关系。

这个概念与UITableView略有不同,所以你可能想在下面看一下它是如何不同的。简而言之,UICollectionView旨在让人们可以根据自己的规则以非线性方式布置一组/一组观点。

示例

我们说我使用UICollectionView制作了地图。我可以使用UICollectionViewCell来显示建筑物。

在这里,我可以以无限不同的方式使用补充视图。

我可以选择将其用作标签来显示城镇名称。在这种情况下,我将使用一个补充视图作为一个部分。

或者我可以使用补充视图来显示每个建筑物的名称。在这种情况下,我会有相同数量的补充意见和单元格。

或者我实际上可以做两件事,将不同的类注册到同一个集合视图。

UICollectionView vs UITableView

很容易混淆,因为UICollectionView使用的术语与UITableView中使用的术语类似,但了解两者之间的差异至关重要为了理解集合视图中的内容。

a)它有一个布局对象,主要关注的是显示注册到集合视图的单元格。据我所知,库存UICollectionViewLayout什么都不做,或提供最小的布局功能,而UITableView类有内置的布局方式 - 即。线性垂直行。

b)您可以通过布局对象定义规则。此规则控制事物 - 单元格,补充视图 - 在集合视图中的显示方式。

c)因为集合视图的目的是为了定义一个自定义布局对象,以便按照某个规则(即布局对象定义的规则)显示一组对象(即单元格,补充视图)以线性的方式排列,没有真正意义上的"节标题"在集合视图中。表视图中的节头是一个视图对象,它提供节中内容的标题或摘要。一个补充的观点并没有这个"每个部分一个"局限性。如果你愿意,你可以像节头一样使用它,但你不必这样做。

d)如示例中所述,您可以注册许多不同类型的补充视图。它不像表格视图,只有页眉和页脚。

e)section中的itemIndexPath只是逻辑组。 (注意UICollectionView没有使用术语row,因为它不会假设单元格会排成一行。)某个部分中的单元格甚至不必如果布局对象中的布局规则是如何定义的那样,则彼此靠近布置。

f)除非您决定将它们逻辑地组合在一起,否则单元格的索引路径和补充视图的索引路径之间没有任何关联。您可以拥有单元格但没有补充视图,两者的数量相同,或者比单元格更多的补充视图。它们是两个不同的离散实体,除非您选择对它们进行逻辑分组并将它们一起使用。

g)如果人们想要有点线性但不同于UITableView外观(例如水平滚动的表格视图或4x4图片布局),Apple提供UICollectionViewFlowLayoutUICollectionViewLayout的子类}。使用它可以使表格视图像行为一样,页眉和页脚也可以作为补充视图。

答案 3 :(得分:0)

在下面的图片中,supplementViews是 Paris Chamonix 。 它们既不是标题,也不是页脚或单元格。他们是另一回事。类似于单元格,您可以注册它们然后也将它们出列,或者它们也从数据源获取数据,因此从这个意义上说它们是数据驱动的,但它们只是不包含单元格的数据,它们包含 meta 数据......

跳到这WWDDC video分钟5:47。虽然我建议你从头开始看整个视频。

enter image description here