zoukankan      html  css  js  c++  java
  • swift

    具体代码如下:

    1、声明

     var hCollectionView:UICollectionView?
        var layout:UICollectionViewFlowLayout?
        
        
        let courser = [
            ["name":"jack chen","pic":"1.jpeg"],
            ["name":"jack chen","pic":"1.jpeg"],
            ["name":"jack chen","pic":"1.jpeg"],
            ["name":"jack chen","pic":"1.jpeg"],
            ["name":"jack chen","pic":"1.jpeg"]
        ]

    2、创建流布局,并初始化cellevtionView

    //        设置布局流格式
        layout = UICollectionViewFlowLayout()
        layout?.itemSize = CGSize(self.view.frame.width/2-1,height:100)
    //        列间距,行间距,偏移
        layout?.minimumInteritemSpacing = 1 //列间距
        layout?.minimumLineSpacing = 1 //行间距
    //        layout?.sectionInset = UIEdgeInsets(top:5,left:0,bottom:0,right:0)
        
        self.hCollectionView = UICollectionView.init(frame: CGRect(x:0,y:0,kScreenWidth,height:kScreenHeight), collectionViewLayout: layout!)
        self.hCollectionView?.delegate = self
        self.hCollectionView?.dataSource = self
        self.hCollectionView?.register(UINib.init(nibName: "hCell", bundle: nil), forCellWithReuseIdentifier: "hCell")
        self.hCollectionView?.backgroundColor = UIColor.orange
        //collectionview的偏移量
    //        self.hCollectionView?.contentInset = UIEdgeInsets(top:5,left:0,bottom:5,right:0)
        
        self.view.addSubview(self.hCollectionView!)

    3、代理方法的实现

    //    行数
        func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
                return courser.count
        }
        
    //    获取单元格
        func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
            let cell:hCell = self.hCollectionView?.dequeueReusableCell(withReuseIdentifier: "hCell", for: indexPath) as! hCell
            //这里判断了下奇偶数
            if indexPath.item%2 == 0 {
                cell.backgroundColor = UIColor.red
                cell.bgImg.image = UIImage(named:self.courser[indexPath.item]["pic"]!)
                cell.descLab.text = self.courser[indexPath.item]["name"]
                
            }else{
                cell.backgroundColor = UIColor.yellow
                cell.bgImg.image = UIImage(named:self.courser[indexPath.item]["pic"]!)
                cell.descLab.text = self.courser[indexPath.item]["name"]
            }

    最终效果图:

    上面这种的话,是标准的流布局,设定好item的尺寸,会随着屏幕向下平铺,但是还有一种自定义的流布局,例如一些门户类app的首页,左边有一个大的Item,右边是2个小的item,两个小的总高度和一个大的Item的高度是一致的!其实就是几个方法,东西不难,敲几遍都差不多了,这里仅做记录!

    实现自定义流布局的话,主要是实现这3个方法:

    // 内容区域总大小,不是可见区域
        override var collectionViewContentSize: CGSize
    // 所有单元格位置属性
        override func layoutAttributesForElements(in rect: CGRect)
            -> [UICollectionViewLayoutAttributes]?
    // 这个方法返回每个单元格的位置和大小
        override func layoutAttributesForItem(at indexPath: IndexPath)
            -> UICollectionViewLayoutAttributes?
  • 相关阅读:
    [BJWC2010]外星联络
    [NOI2015]品酒大会
    工艺 /【模板】最小表示法
    [NOI2016]优秀的拆分
    [HEOI2016/TJOI2016]字符串
    [SDOI2016]生成魔咒
    【模板】后缀自动机 (SAM)【SA解法】
    [湖南集训]图森
    [USACO17DEC]Standing Out from the Herd P
    Annihilate
  • 原文地址:https://www.cnblogs.com/hero11223/p/5772808.html
Copyright © 2011-2022 走看看