ADMozaicCollectionViewLayout 4.1.0

ADMozaicCollectionViewLayout 4.1.0

测试已测试
Lang语言 SwiftSwift
许可 MIT
发布上次发布2018年10月
SPM支持 SPM

Anton Domashnev 维护。



  • 作者
  • Anton Domashnev

ADMozaicCollectionViewLayout

Carthage compatible CocoaPods Compatible codebeat badge

是什么?

ADMozaicCollectionViewLayout 是另一个实现 "砖块" 或 "拼图" 布局的 UICollectionViewLayout 子类。

example

为什么还需要另一个?

因为已经有很多同类型的布局了

但这个项目是完全用 swift 实现的,所以如果您不想弄乱 objective-c 代码和 swift 代码,您就在正确的页面上。另外,与其他 "拼图" 布局相比,这也具有优势 - 您不受单元格预定义大小的限制。

使用方法

这种布局的核心理念是将 UICollectionView 的边界分割成一种类似于“矩阵”的形式。为了实现这一点,ADMozaikCollectionViewLayout 需要指定特定部分中的行高和列宽。

/// Designated initializer for `ADMozaikLayout`
///
/// - Parameter delegate: delegate/datasource for the layout
public init(delegate: ADMozaikLayoutDelegate)

它要求代理对象符合 ADMozaikLayoutDelegate 协议。第一个必填方法是返回布局中每个项的大小。

/// Method should return `ADMozaikLayoutSize` for specific indexPath
///
/// - Parameter collectionView: collection view is using layout
/// - Parameter layout:         layout itself
/// - Parameter indexPath:      indexPath of item for the size it asks for
///
/// - Returns: `ADMozaikLayoutSize` struct object describes the size
func collectionView(_ collectionView: UICollectionView, mozaik layout: ADMozaikLayout, mozaikSizeForItemAt indexPath: IndexPath) -> ADMozaikLayoutSize

其中 ADMozaikLayoutSizeADMozaikCollectionViewLayout 的术语描述了每个单元格的大小。

/**
 *  Defines the size of the layout item
 */
public struct ADMozaikLayoutSize {
  /// Columns number that item requires
  let columns: Int
  /// Rows number that item requires
  let rows: Int
}

第二个方法是获取布局中每个特定部分几何信息。

/// Method should return `ADMozaikLayoutSectionGeometryInfo` to describe specific section's geometry
///
/// - Parameters:
///   - collectionView: collection view is using layout
///   - layoyt:         layout itself
///   - section:        section to calculate geometry info for
///
/// - Returns: `ADMozaikLayoutSectionGeometryInfo` struct object describes the section's geometry
func collectonView(_ collectionView: UICollectionView, mozaik layoyt: ADMozaikLayout, geometryInfoFor section: ADMozaikLayoutSection) -> ADMozaikLayoutSectionGeometryInfo

其中 ADMozaikLayoutSectionGeometryInfo 描述了该部分的全部几何参数。

/**
 *  Defines the layout's information
 */
public struct ADMozaikLayoutSectionGeometryInfo {
  /// array of `ADMozaikLayoutColumn` for the layout
  let columns: [ADMozaikLayoutColumn]

  /// height for each row in points
  let rowHeight: CGFloat

  /// minimum space between items
  let minimumInteritemSpacing: CGFloat

  /// minimum space between each row
  let minimumLineSpacing: CGFloat

  /// Insets for the section from top, left, right, bottom
  let sectionInset: UIEdgeInsets

  /// Height for header in section
  /// Width is currently limited to the collection view width
  let headerHeight: CGFloat

  /// Height for footer in section
  /// Width is currently limited to the collection view width
  let footerHeight: CGFloat
}

内容模式选项

/// Method should return `ADMozaikLayoutSectionContentMode` to describe specific section's geometry
///
/// - Parameters:
///   - collectionView: collection view is using layout
///   - layout:         layout itself
///   - section:        section to return content mode for
///
/// - Returns: `ADMozaikLayoutSectionContentMode` enum describes the section's content mode and how to position cells
func collectonView(_ collectionView: UICollectionView, mozaik layout: ADMozaikLayout, contentModeFor section: ADMozaikLayoutSection) -> ADMozaikLayoutSectionContentMode

contentMode 选项控制如何填充 Mozaik 布局中的项。

  1. fill - 尝试用项目填充空白空间;
  2. ordered - 保持提供项的顺序,因此收集视图中可能出现空白空间。

请查看示例项目以获取完整的示例。请注意,当前的示例项目应在 iPhone 8 屏幕大小上运行。

安装

CocoaPods

要使用 CocoaPods 将 ADMozaicCollectionViewLayout 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它。

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'ADMozaicCollectionViewLayout', '~> 4.0'

Carthage

要使用 Carthage 将 ADMozaicCollectionViewLayout 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它。

github "Antondomashnev/ADMozaicCollectionViewLayout" ~> 4.0

运行 carthage update 构建框架,并将构建的 ADMozaikCollectionViewLayout.framework 拖入您的 Xcode 项目。

迁移指南

许可证

ADMozaicCollectionViewLayout 在 MIT 许可下可用。更多信息请参阅 LICENSE