swift-UICollectionView添加头视图(返回图片文字xib等)

给每组的头部返回指定类型视图

1.设置组头的大小

layout.headerReferenceSize = CGSize(width: 375, height: 160)

2.注册:

返回的是 UICollectionReusableView
collectionView.register(UICollectionReusableView.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "kHeaderViewID")

返回的是xib
collectionView.register(UINib(nibName: "CollectionHeaderView", bundle: nil), forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "kHeaderViewID")

3.实现数据源


返回非xib
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
        //1.取出section的headerView
        let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "kHeaderViewID", for: indexPath) as UICollectionReusableView
        let headerImg = UIImageView(image: UIImage(named: "pt_header_bg"))
        headerImg.frame = CGRect(x: 0, y: 0, width: XMM_ScreenWidth, height: XMM_GetScaleValue(150))
        headerView.addSubview(headerImg)
        return headerView
    }
返回xib

func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
        //1.取出section的headerView
        let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "kHeaderViewID", for: indexPath)
        return headerView
    }

笔记:
想给组头返回什么东西,应该首先考虑的是返回的类型是什么 ,collectionView中返回给组头的是 UICollectionReusableView 这是什么东西,看源码发现是UIView 那就好办了,UIView 是有一个addSubview 方法的,那想要返回什么直接添加到里面就好,另外deq方法后面是需要加as 的,as 的意思就是类型转换为什么。

你可能感兴趣的:(swift,ios)