测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2016年10月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Vincent Le 维护。
受 Lightbox算法 启发的马赛克集合视图布局。这是对 @fmitech的 FMMosaicLayout 的swift实现/扩展。标准的 UICollectionViewFlowLayout
可能会让您的应用呈现显得很无聊,但TRMosaicLayout是一个简单的特性,可以吸引用户的注意力。如果您不相信我,请查看Snapchat的应用及其Discover流中的出色布局。
TRMosaicLayout实现
由 @snapchat 使用类似的实现
/TRMosaicLayout
文件夹拖到您的项目中。创建 UICollectionViewController
的子类
import TRMosaicLayout
class TRCollectionViewController: UICollectionViewController {
override func viewDidLoad() {
super.viewDidLoad()
let mosaicLayout = TRMosaicLayout()
self.collectionView?.collectionViewLayout = mosaicLayout
mosaicLayout.delegate = self
}
}
通过 TRMosaicLayoutDelegate
扩展您的 UICollectionViewController
子类
extension TRCollectionViewController: TRMosaicLayoutDelegate {
func collectionView(collectionView:UICollectionView, mosaicCellSizeTypeAtIndexPath indexPath:NSIndexPath) -> TRMosaicCellType {
// I recommend setting every third cell as .Big to get the best layout
return indexPath.item % 3 == 0 ? TRMosaicCellType.Big : TRMosaicCellType.Small
}
func collectionView(collectionView:UICollectionView, layout collectionViewLayout: TRMosaicLayout, insetAtSection:Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 3, left: 3, bottom: 3, right: 3)
}
func heightForSmallMosaicCell() -> CGFloat {
return 150
}
}
单元格之间的对齐不正确
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath)
let imageView = UIImageView(image: image)
imageView.frame = cell.frame
cell.backgroundView = imageView
return cell
尝试解包时获取 nil
错误
TRMosaicLayout
的代理设置为您的 collectionViewController
mosaicLayout.delegate = self
还有其他事情工作不正常
我很乐意接受任何开放性的贡献。只需fork此项目,进行更改,并提交pull请求。
梁文森,[邮箱地址保护]
TRMosaicLayout适用于MIT
许可证。有关更多信息,请参阅LICENSE
文件。