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

标签 ios swift uicollectionview

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

return UIEdgeInsets(top: 15, left: 15, bottom: 15, right: 15)

,我们怎么能在顶部和底部有相同的边距?

这是MainViewController:

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
    }

}

这是MainCollectionViewCell:

import UIKit

class MainCollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var cellLabelText: UILabel!

}

enter image description here

最佳答案

由于您的 Collection View 只有 1 个部分,因此您需要正确调整一个部分内不同行/列与同一行/列中不同项目之间的间距,而不是为这些部分设置插图。

UICollectionViewDelegateFlowLayout 有以下两个方法,您应该实现您的目标:collectionView(_:layout:minimumLineSpacingForSectionAt:)collectionView(_:layout: minimumInteritemSpacingForSectionAt:).

要复制您当前用于部分的间距,您需要实现如下这些方法:

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)
}

关于ios - 我们如何在 UICollectionView 的底部和顶部添加边距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52588155/

相关文章:

ios - 将单元委托(delegate)添加到类时出错 - swift

ios - UICollectionview 在滚动时更改选择/禁用选择 - iOS

ios - iOS10 和 swift 3 中的 PUSH 问题

Swift:PDF文档写入

iphone - NSURL 为 null 而 NSString 在 Objective-C 中是正确的

ios - 如何使用 Tesseract OCR 读取身份证上的文字?

ios - UICollectionView 性能 - _updateVisibleCellsNow

ios - 无法检测按钮 Action Collection View

ios - iPhone 4 上的背景图像被压缩,因为它使用与 iPhone 5 和 6 共享的 2 倍图像。有解决办法吗?

ios - Facebook 好友列表 Swift