Ios 我们如何在UICollectionView的底部和顶部添加边距?

Ios 我们如何在UICollectionView的底部和顶部添加边距?,ios,swift,uicollectionview,Ios,Swift,Uicollectionview,我是swift新手,这里有一个解决方案,可以制作一个CollectionView,屏幕上有4个单元格,下面的行中有15个边距,这适用于左侧和右侧,但不适用于顶部和按钮 return UIEdgeInsets(top: 15, left: 15, bottom: 15, right: 15) ,我们怎么能在顶部和底部有相同的保证金 这里是主视图控制器: import UIKit class MainViewController: UIViewController , UICollectionV

我是swift新手,这里有一个解决方案,可以制作一个CollectionView,屏幕上有4个单元格,下面的行中有15个边距,这适用于左侧和右侧,但不适用于顶部和按钮

return UIEdgeInsets(top: 15, left: 15, bottom: 15, right: 15)
,我们怎么能在顶部和底部有相同的保证金

这里是主视图控制器:

import UIKit

class MainViewController: UIViewController , UICollectionViewDelegate, UICollectionViewDataSource {

    var listArray : [String] = []
    @IBOutlet weak var collectionView: UICollectionView!

    override func viewDidLoad() {
        super.viewDidLoad()

        print("MainViewController")
        collectionView.delegate = self
        collectionView.dataSource = self

        for index in 1 ..< 12 {
            listArray.append("Cell \(index)")
        }
    }


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


    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return listArray.count
    }


    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "mainCell", for: indexPath) as! MainCollectionViewCell
        let cellIndex = indexPath.item
        cell.cellLabelText.text = listArray[cellIndex]
        cell.backgroundColor = UIColor.blue

        return cell
    }


}


extension MainViewController : UICollectionViewDelegateFlowLayout {

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
        return UIEdgeInsets(top: 15, left: 15, bottom: 15, right: 15)
    }

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

        return CGSize(width: (bounds.width / 2 ) - 30   , height:  ( bounds.height / 2 ) - 30   )
    }

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

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

}
import UIKit

class MainCollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var cellLabelText: UILabel!

}

由于集合视图只有一个节,因此需要正确调整节内不同行/列与同一行/列中不同项目之间的间距,而不是为节设置插图

UICollectionViewDelegateFlowLayout
有以下两种方法可以实现您的目标:
collectionView(\uU2:layout:MinimumLineSpacingForSection:)
collectionView(\uU3:layout:MinimumItemSpacingForSection:)

要复制当前用于截面的间距,需要实现以下方法:

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

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

由于集合视图只有一个节,因此需要正确调整节内不同行/列与同一行/列中不同项目之间的间距,而不是为节设置插入

UICollectionViewDelegateFlowLayout
有以下两种方法可以实现您的目标:
collectionView(\uU2:layout:MinimumLineSpacingForSection:)
collectionView(\uU3:layout:MinimumItemSpacingForSection:)

要复制当前用于截面的间距,需要实现以下方法:

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

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

选择您的故事板:

1) 选择
ui集合
view

2) 设置顶部和底部的
部分插图


我希望这能有所帮助

选择您的故事板:

1) 选择
ui集合
view

2) 设置顶部和底部的
部分插图

我希望这能有所帮助

试试这个

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

                return UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 0)
            }
试试这个

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

                return UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 0)
            }
您应该像这样设置UICollectionViewFlowLayout的“sectionInset”属性

if let flowLayout = yourCollectionView.collectionViewLayout as? UICollectionViewFlowLayout {
        flowLayout.sectionInset = UIEdgeInsetsMake(100, 0, 100, 0)
    }
这将在集合视图中添加100个点的上下边距。顺便说一句,在UIEdgeInsetsMake方法中,顺序是上、左、下、右。

您应该像这样设置UICollectionViewFlowLayout的“sectionInset”属性

if let flowLayout = yourCollectionView.collectionViewLayout as? UICollectionViewFlowLayout {
        flowLayout.sectionInset = UIEdgeInsetsMake(100, 0, 100, 0)
    }
这将在集合视图中添加100个点的上下边距。顺便说一句,在UIEdgeInsetsMake方法中,顺序是上、左、下、右。

可能重复的可能重复的可能重复的可能重复的非常感谢“Dheeraj D”这也很有效,但我一直在寻找一个有代码的解决方案。非常感谢“Dheeraj D”这也很有效,但我一直在寻找有代码的解决方案。