美文网首页ios相关共享
Swift UIcollectionView 最新写法

Swift UIcollectionView 最新写法

作者: 帝步凡 | 来源:发表于2018-06-27 15:25 被阅读39次

UIcollectionView现在多多少少写法变得有点不一样了 首先是是 collectionView 的frame设置变得不一样了  以前是collectionView = UICollectionView(frame: CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)     用的是CGRectMAKE

现在省略了  直接就是CGRect(x: 0, y: 0, width: ScreenWidth, height: ScreenHeight)

现在直接贴所有最新代码

class ViewController: UIViewController ,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout {

    var collectionView:UICollectionView?;

    let CELL_ID = "cell_id";

    let HEAD_ID = "head_id";

    let ScreenHeight = UIScreen.main.bounds.size.height

    let ScreenWidth = UIScreen.main.bounds.size.width

    override func viewDidLoad() {

        super.viewDidLoad();

        self.view.backgroundColor = UIColor.blue;

        self.title = "首页";

        createCollectionView();

    }

    func createCollectionView() {

        let flowLayout = UICollectionViewFlowLayout();

        collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: ScreenWidth, height: ScreenHeight), collectionViewLayout: flowLayout)

        collectionView!.backgroundColor = UIColor.orange;

        collectionView!.delegate = self;

        collectionView!.dataSource = self;

        collectionView!.register(TSMHomeCollectionCell.self, forCellWithReuseIdentifier: CELL_ID);

        collectionView!.register(TSMHomeTopCollectionReusable.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: HEAD_ID);

        self.view.addSubview(collectionView!);

    }

    //MARK: - UICollectionView 代理

    //分区数

    func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {

        return 3;

    }

    //每个分区含有的 item 个数

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

        return 200;

    }

    //返回 cell

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CELL_ID, for: indexPath) as! TSMHomeCollectionCell;

        return cell;

    }

    //每个分区的内边距

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {

        return UIEdgeInsetsMake(10, 10, 10, 10);

    }

    //最小 item 间距

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {

        return 10;

    }

    //最小行间距

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {

        return 10;

    }

    //item 的尺寸

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

        return CGSize(width: ScreenWidth / 4.0 - 50 / 4.0, height: ScreenWidth / 4.0 - 50 / 4.0)

    }

    //每个分区区头尺寸

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {

        return CGSize (width: ScreenWidth, height: 40)

    }

    //返回区头、区尾实例

    func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {

        var headview = TSMHomeTopCollectionReusable();

        if kind == UICollectionElementKindSectionHeader {

            headview = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: HEAD_ID, for: indexPath as IndexPath) as! TSMHomeTopCollectionReusable;

        }

        return headview;

    }

    //item 对应的点击事件

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

        print("index is \(indexPath.row)");

    }

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

}

TSMHomeCollectionCell.swift里面实现了

class TSMHomeCollectionCell: UICollectionViewCell {

    override init(frame: CGRect) {

        super.init(frame: frame);

        let image = UIImage(named: "head");

        let imageV = UIImageView(frame:CGRect(x: 0, y: 0, width: frame.size.width, height: frame.size.height));

        imageV.image = image;

        self.addSubview(imageV);

        self.backgroundColor = UIColor.white;

    }

    required init?(coder aDecoder: NSCoder) {

        fatalError("init(coder:) has not been implemented")

    }

}

TSMHomeTopCollectionReusable.swift实现了

class TSMHomeTopCollectionReusable: UICollectionReusableView {

    override init(frame: CGRect) {

        super.init(frame: frame);

        self.backgroundColor = UIColor.white;

        let label = UILabel(frame: CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height));

        label.text = "标题";

        self.addSubview(label);

    }

    required init?(coder aDecoder: NSCoder) {

        fatalError("init(coder) has not been implemented")

    }

}

虚拟机运行出来的样子

Swift刚刚入坑的可以看看哦~ 

 喜欢的点个赞呗 感谢

相关文章

网友评论

    本文标题:Swift UIcollectionView 最新写法

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