KTMosaicLayout
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。