将中心放在UICollectionView的最后一行

时间:2018-05-06 11:18:29

标签: ios swift uicollectionview

我有一个7个单元格UICollectionView显示如下

X X
X X
X X
 X

我需要它像这样显示

public function authorize()
{
    return true;
}

public function rules()
{
    return ['name => 'required'];
}

如何在Swift中完成这项工作?

2 个答案:

答案 0 :(得分:0)

这是我的代码,我将数据源计数添加到7个项目

还要确保创建单元格

extension ViewController :UICollectionViewDelegate , UICollectionViewDelegateFlowLayout,UICollectionViewDataSource{
     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 7 // data source
      }

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

          let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! UICollectionViewCell
           cell.backgroundColor = .red
          return cell
       }

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

        let spaceBetweenCell :CGFloat = 4.0
        let screenWidth = UIScreen.main.bounds.size.width - CGFloat(2 * spaceBetweenCell)
        let totalSpace = spaceBetweenCell * 1.0;  // there is one space in 2 item
        if indexPath.row == 6 { // indexpath.row  == datasource.count - 1
             if 6 % 2  == 1{  // check if last cell is odd
                return CGSize(width: screenWidth , height: (screenWidth-totalSpace)/2) // all Width and  same previous height
             }else{
                return CGSize(width: (screenWidth - totalSpace)/2, height: (screenWidth-totalSpace)/2)

            }
        }else{
            return CGSize(width: (screenWidth - totalSpace)/2, height: (screenWidth-totalSpace)/2)

        }

    }

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

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



}

,项目之间的间距= 4

代码

{{1}}

答案 1 :(得分:0)

您可以在collectionViewLayout函数中进行此简单计算。

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

    //return itemSize
    let spaceBetweenCell :CGFloat = 0
    let screenWidth = UIScreen.main.bounds.size.width - CGFloat(2 * spaceBetweenCell)
    let totalSpace = spaceBetweenCell * 1.0
    if indexPath.row == categories.count-1 {
      // check if last cell is odd
      if categories.count % 2  == 1 {
        return CGSize(width: screenWidth , height: (screenWidth-totalSpace)/4) // all Width and  same previous height
      }else {
        return itemSize
      }
    }else{
      return itemSize
    }
  }