supplementaryViewOfKind 在哪里使用?
Where is supplementaryViewOfKind used?
我想弄清楚 supplementaryViewOfKind
的用处。我查看了有关 SO 的文档和其他一些问题,但我仍然无法理解它的作用。根据我的理解,它将用作 auxiliary Headerview。
collectionView.registerClass(imageCell.self, forCellWithReuseIdentifier: "imageCell")
collectionView.registerClass(imageCell2.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "imageCell2"
我不能用这种方式注册 imageCell2 吗:
collectionView.registerClass(imageCell2.self, forCellWithReuseIdentifier: "imageCell2")
然后当我需要时,在 cellForItemAtIndexPath
处切换要显示哪个单元格的大小写?还是我不明白 supplementaryViewOfKind
的存在目的
你最好看看这篇文章:
Collection View Programming Guide for iOS
在 Custom Layouts: A Worked Example 部分,您可以找到使用补充视图自定义布局的示例。
在上面的示例中,连接线是使用补充视图实现的。
您可以通过多种方式将补充视图与您的自定义布局一起使用。
I'm trying to figure out where supplementaryViewOfKind is used
布局可以随心所欲地定义补充视图类型,以便您指定非普通单元格(项)的内容。
一个很好的例子是 UICollectionViewFlowLayout 允许您请求部分页眉和页脚的方式。它们是补充意见。特别地,它们是 UICollectionElementKindSectionHeader
和 UICollectionElementKindSectionFooter
类的补充视图。参见 the documentation。
在我的拉丁应用程序的章节列表中,章节(左侧带有白色数字的黑条)是补充视图:
最短答案
观看此视频:
https://developer.apple.com/videos/play/wwdc2012/205/
简答
补充视图,就像它的名字一样,提供补充 material 需要一些数据才能正确显示。单元格和补充视图可以彼此密切相关,也可以彼此关系不大。
这个概念与 UITableView
略有不同,因此您可能想在下面阅读它的不同之处。简而言之,UICollectionView
旨在让人们可以根据自己的规则以 non-linear 的方式布置一组 of/groups 视图。
例子
假设我使用 UICollectionView
制作了一张地图。我可以使用 UICollectionViewCell
s 来显示建筑物。
在这里,我可以以无限不同的方式使用补充视图。
我可以选择将其用作显示城镇名称的标签。在这种情况下,我将为一个部分使用一个补充视图。
或者我可以使用辅助视图来显示每个建筑物的名称。在这种情况下,我会有相同数量的补充视图和单元格。
或者我实际上可以同时执行这两项操作,将不同的 class 注册到同一个 collection 视图。
UICollectionView 与 UITableView
很容易混淆,因为 UICollectionView
中使用的术语与 UITableView
中使用的术语相似,但了解两者之间的区别对于理解事物的作用至关重要在 collection 视图中。
a) 它有一个布局 object,其主要关注的是显示注册到 collection 视图的单元格。据我所知,库存 UICollectionViewLayout
什么都不做,或者提供最小的布局功能,而 UITableView
class 有一种 built-in 布局其单元格的方式 - 即线性垂直行。
b) 您通过布局定义规则object。此规则控制事物(单元格、补充视图)在 collection 视图中的显示方式。
c) 因为 collection 视图是有意的,所以你定义了一个自定义布局 object,以便显示一组 objects(即单元格,补充视图)如下某个规则(即由布局 object 定义的规则)不是以线性方式布局的,在 collection 视图中没有真正意义上的 "section header"。 table 视图中的部分 header 是提供该部分内容的标题或摘要的视图 object。补充视图没有此 "one per section" 限制。如果你愿意,你可以把它当作一个部分 header 使用,但你不必这样做。
d) 如示例中所述,您可以注册许多不同类型的补充视图。它不像 table 视图,您只能看到 header 和页脚。
e) IndexPath
中的section
和item
只是逻辑组。 (注意 UICollectionView
不使用术语 row
,因为它不假定单元格将排成一行)一个部分中的单元格甚至不必靠近每个单元格布置其他如果这是布局规则在布局中定义的方式 object.
f) 除非您决定将它们逻辑组合在一起,否则单元格的索引路径和补充视图的索引路径彼此没有联系。您可以有单元格但没有补充视图,两者的数量相同,或者比单元格更多的补充视图。它们是两个不同的离散实体,除非您选择在逻辑上将它们分组并一起使用。
g) 如果人们想要有点线性但不同于 UITableView
的外观(例如水平滚动 table 视图或图片的 4x4 布局),Apple 提供 UICollectionViewFlowLayout
,一个UICollectionViewLayout
的子 class。使用它,您可以拥有 table 类似行为的视图,以及 header 和页脚作为补充视图。
补充视图是下图中的 Paris 和 Chamonix。
它们既不是页眉,也不是页脚或单元格。他们是另一回事。与单元格类似,您会注册它们,然后将它们出列,或者它们也确实从数据源获取数据,所以从这个意义上说,它们是数据驱动的,但它们只是不包含单元格的数据,它们包含 元数据...
只需跳至此 WWDDC video 的第 5:47 分钟。尽管我建议您从头开始观看整个视频。
我想弄清楚 supplementaryViewOfKind
的用处。我查看了有关 SO 的文档和其他一些问题,但我仍然无法理解它的作用。根据我的理解,它将用作 auxiliary Headerview。
collectionView.registerClass(imageCell.self, forCellWithReuseIdentifier: "imageCell")
collectionView.registerClass(imageCell2.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "imageCell2"
我不能用这种方式注册 imageCell2 吗:
collectionView.registerClass(imageCell2.self, forCellWithReuseIdentifier: "imageCell2")
然后当我需要时,在 cellForItemAtIndexPath
处切换要显示哪个单元格的大小写?还是我不明白 supplementaryViewOfKind
你最好看看这篇文章:
Collection View Programming Guide for iOS
在 Custom Layouts: A Worked Example 部分,您可以找到使用补充视图自定义布局的示例。
在上面的示例中,连接线是使用补充视图实现的。
您可以通过多种方式将补充视图与您的自定义布局一起使用。
I'm trying to figure out where supplementaryViewOfKind is used
布局可以随心所欲地定义补充视图类型,以便您指定非普通单元格(项)的内容。
一个很好的例子是 UICollectionViewFlowLayout 允许您请求部分页眉和页脚的方式。它们是补充意见。特别地,它们是 UICollectionElementKindSectionHeader
和 UICollectionElementKindSectionFooter
类的补充视图。参见 the documentation。
在我的拉丁应用程序的章节列表中,章节(左侧带有白色数字的黑条)是补充视图:
最短答案
观看此视频: https://developer.apple.com/videos/play/wwdc2012/205/
简答
补充视图,就像它的名字一样,提供补充 material 需要一些数据才能正确显示。单元格和补充视图可以彼此密切相关,也可以彼此关系不大。
这个概念与 UITableView
略有不同,因此您可能想在下面阅读它的不同之处。简而言之,UICollectionView
旨在让人们可以根据自己的规则以 non-linear 的方式布置一组 of/groups 视图。
例子
假设我使用 UICollectionView
制作了一张地图。我可以使用 UICollectionViewCell
s 来显示建筑物。
在这里,我可以以无限不同的方式使用补充视图。
我可以选择将其用作显示城镇名称的标签。在这种情况下,我将为一个部分使用一个补充视图。
或者我可以使用辅助视图来显示每个建筑物的名称。在这种情况下,我会有相同数量的补充视图和单元格。
或者我实际上可以同时执行这两项操作,将不同的 class 注册到同一个 collection 视图。
UICollectionView 与 UITableView
很容易混淆,因为 UICollectionView
中使用的术语与 UITableView
中使用的术语相似,但了解两者之间的区别对于理解事物的作用至关重要在 collection 视图中。
a) 它有一个布局 object,其主要关注的是显示注册到 collection 视图的单元格。据我所知,库存 UICollectionViewLayout
什么都不做,或者提供最小的布局功能,而 UITableView
class 有一种 built-in 布局其单元格的方式 - 即线性垂直行。
b) 您通过布局定义规则object。此规则控制事物(单元格、补充视图)在 collection 视图中的显示方式。
c) 因为 collection 视图是有意的,所以你定义了一个自定义布局 object,以便显示一组 objects(即单元格,补充视图)如下某个规则(即由布局 object 定义的规则)不是以线性方式布局的,在 collection 视图中没有真正意义上的 "section header"。 table 视图中的部分 header 是提供该部分内容的标题或摘要的视图 object。补充视图没有此 "one per section" 限制。如果你愿意,你可以把它当作一个部分 header 使用,但你不必这样做。
d) 如示例中所述,您可以注册许多不同类型的补充视图。它不像 table 视图,您只能看到 header 和页脚。
e) IndexPath
中的section
和item
只是逻辑组。 (注意 UICollectionView
不使用术语 row
,因为它不假定单元格将排成一行)一个部分中的单元格甚至不必靠近每个单元格布置其他如果这是布局规则在布局中定义的方式 object.
f) 除非您决定将它们逻辑组合在一起,否则单元格的索引路径和补充视图的索引路径彼此没有联系。您可以有单元格但没有补充视图,两者的数量相同,或者比单元格更多的补充视图。它们是两个不同的离散实体,除非您选择在逻辑上将它们分组并一起使用。
g) 如果人们想要有点线性但不同于 UITableView
的外观(例如水平滚动 table 视图或图片的 4x4 布局),Apple 提供 UICollectionViewFlowLayout
,一个UICollectionViewLayout
的子 class。使用它,您可以拥有 table 类似行为的视图,以及 header 和页脚作为补充视图。
补充视图是下图中的 Paris 和 Chamonix。 它们既不是页眉,也不是页脚或单元格。他们是另一回事。与单元格类似,您会注册它们,然后将它们出列,或者它们也确实从数据源获取数据,所以从这个意义上说,它们是数据驱动的,但它们只是不包含单元格的数据,它们包含 元数据...
只需跳至此 WWDDC video 的第 5:47 分钟。尽管我建议您从头开始观看整个视频。