一个集合视图布局,让您可以控制单元格的水平和垂直对齐方式。您可以使用它来像左对齐或右对齐文本中的单词一样对齐单元格,并且可以指定单元格在其行内如何垂直对齐。
除此之外,该布局的行为与 Apple 的 UICollectionViewFlowLayout
完全相同。(它是其子类。)
AlignedCollectionViewFlowLayout
的开发考虑了“标签视图”,即显示有限数量项目且布局相对简单的集合视图。它非常适合这种用例。虽然它也适用于大量项目和更复杂的单元格布局,但在这种情况下滚动可能会变得卡顿。这是因为布局需要递归地从其超类获取布局属性,这是无法避免的。如果您遇到无法接受的卡顿现象,请考虑其他替代方案。
您可以任意组合水平和垂直对齐方式,以实现您期望的布局。
horizontalAlignment = .left
horizontalAlignment = .right
horizontalAlignment = .justified
horizontalAlignment = .leading
根据用户的布局方向(UIApplication.shared.userInterfaceLayoutDirection)渲染为 .left
或 .right
.leftToRight
→ .left
.rightToLeft
→ .right
horizontalAlignment = .trailing
根据用户的布局方向(UIApplication.shared.userInterfaceLayoutDirection)渲染为 .left
或 .right
。
.leftToRight
→ .right
.rightToLeft
→ .left
verticalAlignment = .top
verticalAlignment = .center
verticalAlignment = .bottom
AlignedCollectionViewFlowLayout 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile
pod "AlignedCollectionViewFlowLayout"
只需将文件 AlignedCollectionViewFlowLayout.swift
添加到您的 Xcode 项目中,即可开始使用。
要运行示例项目,请克隆存储库,并首先从 Example 目录运行 pod install
。
您在 Interface Builder 中有一个集合视图,并已正确设置其数据源。运行应用程序并确保一切按预期工作(除了单元格对齐)。
在文档大纲中,选择集合视图布局对象。
在身份检查器中,将布局对象的自定义类设置为 AlignedCollectionViewFlowLayout
。
将以下代码添加到您的视图控制器的 viewDidLoad()
方法并进行自定义
let alignedFlowLayout = collectionView?.collectionViewLayout as? AlignedCollectionViewFlowLayout
alignedFlowLayout?.horizontalAlignment = .left
alignedFlowLayout?.verticalAlignment = .top
如果您省略最后两行中的任何一行,将使用默认对齐方式(水平两端对齐,垂直居中)。
💡 专业提示: 除了如上所示进行类型转换布局之外,您还可以从集合视图布局对象拖动一个 outlet 到您的视图控制器。
创建一个新的 AlignedCollectionViewFlowLayout
对象并指定您想要的对齐方式
let alignedFlowLayout = AlignedCollectionViewFlowLayout(horizontalAlignment: .left, verticalAlignment: .top)
要么创建一个新的集合视图对象,并使用 alignedFlowLayout
初始化它
let collectionView = UICollectionView(frame: bounds, collectionViewLayout: alignedFlowLayout)
或者 将 alignedFlowLayout
分配给现有集合视图的 collectionViewLayout
属性
yourExistingCollectionView.collectionViewLayout = alignedFlowLayout
实现您的集合视图的数据源。
运行应用程序。
对于 left
和 right
对齐,AlignedCollectionViewFlowLayout
以恒定间距水平分布单元格,该间距对于所有行都是相同的。您可以使用 minimumInteritemSpacing
属性控制间距。
alignedFlowLayout.minimumInteritemSpacing = 10
尽管其名称(源自其超类 UICollectionViewFlowLayout
)如此,但此属性并不描述最小间距,而是单元格之间精确的间距。
行之间的垂直间距的工作方式与 UICollectionViewFlowLayout
完全相同
alignedFlowLayout.minimumLineSpacing = 10
Mischa Hildebrand, web@mischa-hildebrand.de
AlignedCollectionViewFlowLayout 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。