AlignedCollectionViewFlowLayout

Version CocoaPods License Platform

一个集合视图布局,让您可以控制单元格的水平和垂直对齐方式。您可以使用它来像左对齐或右对齐文本中的单词一样对齐单元格,并且可以指定单元格在其行内如何垂直对齐。

除此之外,该布局的行为与 Apple 的 UICollectionViewFlowLayout 完全相同。(它是其子类。)

ℹ️ 重要提示

AlignedCollectionViewFlowLayout 的开发考虑了“标签视图”,即显示有限数量项目且布局相对简单的集合视图。它非常适合这种用例。虽然它也适用于大量项目和更复杂的单元格布局,但在这种情况下滚动可能会变得卡顿。这是因为布局需要递归地从其超类获取布局属性,这是无法避免的。如果您遇到无法接受的卡顿现象,请考虑其他替代方案。

可用的对齐选项

您可以任意组合水平和垂直对齐方式,以实现您期望的布局。

水平对齐

Example layout for horizontalAlignment = .left

Example layout for horizontalAlignment = .right

Example layout for horizontalAlignment = .justified

垂直对齐

Example layout for verticalAlignment = .top

Example layout for verticalAlignment = .center

Example layout for verticalAlignment = .bottom

安装

使用 CocoaPods

AlignedCollectionViewFlowLayout 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile

pod "AlignedCollectionViewFlowLayout"

手动安装

只需将文件 AlignedCollectionViewFlowLayout.swift 添加到您的 Xcode 项目中,即可开始使用。

示例

要运行示例项目,请克隆存储库,并首先从 Example 目录运行 pod install

用法

在 Interface Builder 中设置

  1. 您在 Interface Builder 中有一个集合视图,并已正确设置其数据源。运行应用程序并确保一切按预期工作(除了单元格对齐)。

  2. 在文档大纲中,选择集合视图布局对象。

    Screenshot of the Flow Layout object in Interface Builder

  3. 在身份检查器中,将布局对象的自定义类设置为 AlignedCollectionViewFlowLayout

    Screenshot: How to set a custom class for the layout object in Interface Builder

  4. 将以下代码添加到您的视图控制器的 viewDidLoad() 方法并进行自定义

    let alignedFlowLayout = collectionView?.collectionViewLayout as? AlignedCollectionViewFlowLayout
    alignedFlowLayout?.horizontalAlignment = .left
    alignedFlowLayout?.verticalAlignment = .top

    如果您省略最后两行中的任何一行,将使用默认对齐方式(水平两端对齐,垂直居中)。

    💡 专业提示: 除了如上所示进行类型转换布局之外,您还可以从集合视图布局对象拖动一个 outlet 到您的视图控制器。

在代码中设置

  1. 创建一个新的 AlignedCollectionViewFlowLayout 对象并指定您想要的对齐方式

    let alignedFlowLayout = AlignedCollectionViewFlowLayout(horizontalAlignment: .left, verticalAlignment: .top)
  2. 要么创建一个新的集合视图对象,并使用 alignedFlowLayout 初始化它

    let collectionView = UICollectionView(frame: bounds, collectionViewLayout: alignedFlowLayout)

    或者alignedFlowLayout 分配给现有集合视图的 collectionViewLayout 属性

    yourExistingCollectionView.collectionViewLayout = alignedFlowLayout
  3. 实现您的集合视图的数据源。

  4. 运行应用程序。


其他配置

对于 leftright 对齐,AlignedCollectionViewFlowLayout恒定间距水平分布单元格,该间距对于所有行都是相同的。您可以使用 minimumInteritemSpacing 属性控制间距。

alignedFlowLayout.minimumInteritemSpacing = 10

尽管其名称(源自其超类 UICollectionViewFlowLayout)如此,但此属性并不描述最小间距,而是单元格之间精确的间距。

行之间的垂直间距的工作方式与 UICollectionViewFlowLayout 完全相同

alignedFlowLayout.minimumLineSpacing = 10

尽情享用! 😎

作者

Mischa Hildebrand, web@mischa-hildebrand.de

Twitter Follow GitHub followers

许可证

AlignedCollectionViewFlowLayout 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。