gpt4 book ai didi

Swift - 水平居中 UICollectionView Cell 不起作用

转载 作者:行者123 更新时间:2023-11-30 10:28:55 25 4
gpt4 key购买 nike

这是 CollectionView 的 ViewController 中的代码,但它不会使 Cells 位于 CollectionView 的中心,结果如下:

enter image description here

extension DeviceAndEquipmentViewController : UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {

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

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

if collectionView === deviceCollectionView {
guard selectedDeviceList.count != 0 else {
selectedDeviceList.insert("nil", at: 0)
return 1
}
return selectedDeviceList.count
} else if collectionView === equipmentCollectionView {
guard selectedEquipmentList.count != 0 else {
selectedEquipmentList.insert("nil", at: 0)
return 1
}
return selectedEquipmentList.count
} else if collectionView === softwareCollectionView {
guard selectedSoftwareList.count != 0 else {
selectedSoftwareList.insert("nil", at: 0)
return 1
}
return selectedSoftwareList.count
} else {
return 0
}

}


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

let inset:CGFloat = 10
return UIEdgeInsets(top: inset, left: inset, bottom: inset, right: inset)

}

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

let numberOfItemsPerRow:CGFloat = 1
let spacingBetweenCells:CGFloat = 16

let totalSpacing = (2 * self.spacing) + ((numberOfItemsPerRow - 1) * spacingBetweenCells)

let width = (deviceCollectionView.bounds.width - totalSpacing) / numberOfItemsPerRow

if collectionView == deviceCollectionView {

let device = self.selectedDeviceList[indexPath.row]

if device != "nil" {
return CGSize(width: width, height: 45)
} else {
return CGSize(width: width + 15, height: 55)
}
} else if collectionView == equipmentCollectionView {

let equipment = self.selectedEquipmentList[indexPath.row]
if equipment != "nil" {
return CGSize(width: width, height: 45)
} else {
return CGSize(width: width + 15, height: 55)
}
} else {

let software = self.selectedSoftwareList[indexPath.row]

if software != "nil" {
return CGSize(width: width, height: 45)
} else {
return CGSize(width: width + 15, height: 55)
}
}


}
}

这是每个 CollectionView FlowLayout 的设置

let layout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: spacing, left: spacing, bottom: spacing, right: spacing)
layout.minimumLineSpacing = spacing
layout.minimumInteritemSpacing = spacing
self.equipmentCollectionView?.collectionViewLayout = layout

我已经看过其他主题,但它没有解决我的问题,我对每个 Collection View 单元格使用 XIB,并且没有在代码中完成所有操作,如果您能帮助我解决这个问题,我将不胜感激。

最佳答案

我找到了答案,但我仍然不知道它有什么问题,它可以在其他 ViewController 中工作,但不能在这个 ViewController 中工作,这个 ViewController 和其他 ViewController 之间的唯一区别是,在这个 ViewController 中我使用了超过 1 个 ViewController。我链接了下面的答案,所以如果有人有这个问题可以解决它,我使用了第二个解决方案并且它有效。感谢 Cœur 分享此内容。

<强> Answer

关于Swift - 水平居中 UICollectionView Cell 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59564375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com