// // TestRandomUICollectionViewLayout.swift // WCJ_SWIFT_STUDY // // Created by 王成杰 on 2020/3/6. // Copyright © 2020 wangcj. All rights reserved. //
import UIKit
class TestRandomUICollectionViewLayout: UICollectionViewLayout {
let SCREEN_W = UIScreen.main.bounds.size.width
let SCREEN_H = UIScreen.main.bounds.size.height
var contentH: CGFloat = 0
let numberColumns = 2
let lineSpace: CGFloat = 10
var attributeStore = [UICollectionViewLayoutAttributes ]()
override func prepare() {
super.prepare()
if attributeStore.isEmpty {
let columW = (SCREEN_W - 3.0 * lineSpace)/CGFloat(numberColumns)
var xOffset = [CGFloat]()
for colum in 0 ..< numberColumns {
xOffset.append(CGFloat(colum) * columW + lineSpace * CGFloat(colum) + lineSpace )
}
var colum: Int = 0
var yOffset = [CGFloat](repeating: 0, count: numberColumns)
for item in 0 ..< collectionView!.numberOfItems(inSection: 0) {
let indexPath = NSIndexPath(item: item, section: 0)
let randomNumber: Int = Int(arc4random() % 100) + 70
let height = CGFloat(randomNumber)
let frame = CGRect(x: xOffset[colum], y: yOffset[colum], width: columW, height: height)
let attributes = UICollectionViewLayoutAttributes(forCellWith: indexPath as IndexPath)
attributes.frame = frame
attributeStore.append(attributes)
contentH = max(contentH, frame.maxY)
yOffset[colum] = yOffset[colum] + height + lineSpace
colum = colum >= (numberColumns - 1) ? 0: 1
}
}
}
override func layoutAttributesForItem(at indexPath: IndexPath) -> UICollectionViewLayoutAttributes? {
return attributeStore[indexPath.row]
}
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
return attributeStore
}
override var collectionViewContentSize: CGSize{
return CGSize(width: SCREEN_W, height: contentH)
}
}