美文网首页学习封装的demo材料iOS Developer
Swift之collectionView的基本使用

Swift之collectionView的基本使用

作者: 张不二01 | 来源:发表于2017-04-03 17:20 被阅读4730次
collectionView.png
1, 首先创建collectionView,并设置数据源和代理
self.collectionView = UICollectionView.init(frame: self.view.bounds)
self.view.addSubview(self.collectionView)
self.collectionView.dataSource = self
self.collectionView.delegate = self
2,设置collectionView的布局(可自行进行封装)
let layout = UICollectionViewFlowLayout.init()
layout.itemSize = CGSize.init(width: 100, height: 100)
layout.minimumLineSpacing = 30
self.minimumInteritemSpacing = 50
layout.sectionInset = UIEdgeInsets.init(top: 0, left: 30, bottom: 0, right: 30)

self.collectionView.collectionViewLayout = layout
3,注册cell,如果需要还可以注册header和footer(我这里是通过nib进行注册,也可以直接通过代码进行注册)
//cell注册
self.collectionView.register(UINib.init(nibName: "IMCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "cell")

//header注册
self.collectionView.register(UINib.init(nibName: "IMCollectionReusableView", bundle: nil), forSupplementaryViewOfKind: "UICollectionElementKindSectionHeader", withReuseIdentifier: "header")

//footer注册
self.collectionView.register(UINib.init(nibName: "IMCollectionReusableView", bundle: nil), forSupplementaryViewOfKind: "UICollectionElementKindSectionFooter", withReuseIdentifier: "footer")

4,遵守相应的数据源和代理,实现相应的方法
//MARK:- collectionView的数据源和代理方法
extension IMCollectionViewViewController: UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout{

    func numberOfSections(in collectionView: UICollectionView) -> Int {
        return 5
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 9
    }
    //cellForItemAt indexPath
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
        return cell
    }
    //这个是设定header和footer的方法,根据kind不同进行不同的判断即可
    func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {

        if kind == "UICollectionElementKindSectionHeader"{
            let resuableView = collectionView.dequeueReusableSupplementaryView(ofKind: "UICollectionElementKindSectionHeader", withReuseIdentifier: "header", for: indexPath) as! IMCollectionReusableView
            resuableView.resuableKindLabel.text = "header"
            resuableView.backgroundColor = UIColor.red
            return resuableView
        }else{
            let resuableView = collectionView.dequeueReusableSupplementaryView(ofKind: "UICollectionElementKindSectionFooter", withReuseIdentifier: "footer", for: indexPath) as! IMCollectionReusableView
            resuableView.resuableKindLabel.text = "footer"
            resuableView.backgroundColor = UIColor.blue
            return resuableView
        }
    }
    //header高度
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
        return CGSize.init(width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height*0.1)
    }
    //footer高度
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize {
        return CGSize.init(width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height*0.1)
    }
}

相关文章

网友评论

  • 姑娘丶你命里缺我:楼主,请问下我一个视图里面有两个collectionview,cell是不一样的,请问下这个代理的问题应该怎样处理?

本文标题:Swift之collectionView的基本使用

本文链接:https://www.haomeiwen.com/subject/ixroottx.html