如何在集合视图单元格中设置内部间距,每行2个单元格?

时间:2018-05-06 20:39:08

标签: swift uicollectionview collectionview

我已经坚持了两个星期了。搜索到处都无法找到解决方案。我想让细胞更接近中间。还有另一个集合视图,每行3个单元格我需要做同样的事情。感谢

enter image description here

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

return CGSize(width: 153, height: 241)

}

//

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

return UIEdgeInsetsMake(10, 11, 10, 11)

}

//

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

return 0

}

//

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

return 0

}

2 个答案:

答案 0 :(得分:1)

Jusr阅读评论,不要忘记在let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! UICollectionViewCell设置您的单元格

 extension ViewController :UICollectionViewDelegate , UICollectionViewDelegateFlowLayout,UICollectionViewDataSource{
         func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
            return 100 // 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 {

            // 3 cell same size in each row space between them 4
            let spaceBetweenCell :CGFloat = 4.0  // if you change this parmters you have to change minimumInteritemSpacingForSectionAt ,
            let screenWidth = UIScreen.main.bounds.size.width - CGFloat(2 * spaceBetweenCell)
            let totalSpace = spaceBetweenCell * 2.0;  // there is 2 between  3 item
            return CGSize(width: (screenWidth - totalSpace)/3, height: (screenWidth-totalSpace)/3)

        }

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

        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
            return 4.0 // space between items in row
        }



    }

答案 1 :(得分:1)

如果您对单元格尺寸感到满意,只想将它们移近,那么请调整leftright插图(UIEdgeInsetsMake的第2和第4个输入) :

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    return UIEdgeInsetsMake(10, 16, 10, 16)
}