我是 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!
}
最佳答案
由于您的 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/