Pinterest風のCollectionViewを利用できるようにする
CHTCollectionViewWaterfallLayout
で、セルの横幅を取りたかったのでメモ
UICollectionViewLayout を拡張して実装
import Foundation
import CHTCollectionViewWaterfallLayout
extension UICollectionViewLayout {
func getCHTItemWidth() -> CGFloat{
guard let collectionViewRect = self.collectionView?.bounds else {
return 0
}
if self is CHTCollectionViewWaterfallLayout {
let me = self as! CHTCollectionViewWaterfallLayout
let columnWidth = collectionViewRect.width - (me.sectionInset.left + me.sectionInset.right)
return ( columnWidth - CGFloat(me.columnCount - 1) * me.minimumColumnSpacing ) / me.columnCount
} else {
return collectionViewRect.width
}
}
}
使用方法
横幅:セルの横幅 縦幅:セルの横幅+60 のセルを返したい時
extension ViewController : CHTCollectionViewDelegateWaterfallLayout {
func collectionView(collectionView: UICollectionView!,
layout collectionViewLayout: UICollectionViewLayout!,
sizeForItemAtIndexPath indexPath: NSIndexPath!) -> CGSize {
let w = collectionViewLayout.getCHTItemWidth()
return CGSize(width: w, height: w + 60)
}
}
セルの横幅に合わせた柔軟なレイアウトが組めて楽しいです