KTMosaicLayout 1.0.0

KTMosaicLayout 1.0.0

Killian THORON 维护。



KTMosaicLayout

Reusable

Xcode 9.0+ iOS 9.0+ tvOS 9.0+ Swift 4.0+ Version Carthage compatible License Twitter

KTMosaicLayout 是一个 Swift 的 UICollectionViewLayout,能够在不同的列上显示 UICollectionView 项目。

特点

如果某个节至少有3列,则 KTMosaicLayout 可以以 的样式显示该节的第一个项目。当一个节使用 的样式显示第一个项目时,这意味着该节的第一个行显示了该部分上所有最后一个项目的单个列,以便将第一个项目的布局设置为

💡如果您不需要像上面所示在节的区域中显示大样式项目,则可以将此布局替换为一个普通的 UICollectionViewFlowLayout

📱示例

💡要运行此 示例项目,请克隆仓库,运行 pod install 命令,并运行 iOS 应用程序。

安装

CocoaPods

首选的安装方法是使用 CocoaPods。请在您的 Podfile 中添加以下内容:

pod 'KTMosaicLayout'

Carthage

对于 Carthage,请在您的 Cartfile 中添加以下内容

github "iKiKi/KTMosaicLayout"

使用方法

您只需将一个 KTMosaicLayout 设置到您的 UICollectionView 布局中(使用 IB 或代码),并将一个 MosaicLayoutDelegate 设置为这个布局,并实现必要的方法

public protocol MosaicLayoutDelegate: class {
  func collectionView(_ collectionView: UICollectionView, numberOfColumnsInSection section: Int) -> Int
  func collectionView(_ collectionView: UICollectionView, shouldShowBigInSection section: Int) -> Bool
  func collectionView(_ collectionView: UICollectionView, heightForItemInSection section: Int) -> CGFloat // Called in case more than 1 column
  func collectionView(_ collectionView: UICollectionView, heightForItemAt indexPath: IndexPath) -> CGFloat // Called in case only 1 column

  func collectionView(_ collectionView: UICollectionView, insetForSectionAt section: Int) -> UIEdgeInsets
  func collectionView(_ collectionView: UICollectionView, minimumLineSpacingForSectionAt section: Int) -> CGFloat
  func collectionView(_ collectionView: UICollectionView, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat

  func collectionView(_ collectionView: UICollectionView, referenceSizeForHeaderInSection section: Int) -> CGSize
  func collectionView(_ collectionView: UICollectionView, referenceSizeForFooterInSection section: Int) -> CGSize
}

💡 heightForItemInSection 在有超过一列的分区时被调用。heightForItemAt 在分区只有一列时被调用(用于布局不同高度的项)。

许可证

KTMosaicLayout 采用 MIT 许可证发布。有关详细信息,请参阅 LICENSE