Add a simple UIView as header of UICollectionView
header, ios, uicollectionreusableview, uicollectionview
Solution
In swift like below
Register Header View
collectionView.register(HeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "headerView")
In `UICollectionViewDataSource`
func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
let headerView = collectionView.dequeueReusableSupplementaryViewOfKind(UICollectionElementKindSectionHeader, withReuseIdentifier: "headerView", forIndexPath: indexPath)
headerView.frame.size.height = 100
return headerView
}
Important is that you are supply the flow layout with the header size
flowLayout.headerReferenceSize = CGSize(width: self.collectionView.frame.size.width, height: 100)
Otherwise the data source method will not get called
Problem
I have a `UICollectionView`. I would like to add a header. My header would only be a `UILabel`. I've : 1) selected "Section Header" as a Collection View accessory in the IB. 2) created a Collection Reusable View in the IB, on the side, declared as `collectionViewHeader`. 3) added those lines : ``` - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { if (kind == UICollectionElementKindSectionHeader) { return collectionViewHeader; } return nil; } ``` But they are never called. Do I have to create a class just for that label in order to use ``` [self.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header"]; ``` ? Why isn't it as simple as the `UITableView` where you just drag and drop whatever header you want ?! Things are so complicated with `UICollectionView`...