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) } }
セルの横幅に合わせた柔軟なレイアウトが組めて楽しいです