我正在尝试创建一个水平UICollectionView,其中的单元格大小不同,具体取决于每个单元格中的文本数量。我能够使用下面的代码完成此操作,但它现在导致我的单元格之间有额外的间距。我的minimumLineSpacingForSectionAt已经返回0并且我已经尝试返回一个负数,但两者都没有工作。有谁知道为什么会发生额外的空间以及如何摆脱它?
仅供参考,在我的单元格中,我有一个UILabel,它被约束到单元格的整个尺寸。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
var stringWidth: CGFloat = 100
//Finding and setting feedMenuCellWidth
if let groupName = groups[indexPath.item].name {
var originalString: String = groupName
let myString: NSString = originalString as NSString
let size: CGSize = myString.size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 17.0)])
stringWidth = size.width
}
//Returning CGSize
return CGSize(width: stringWidth + 20, height: frame.height) // with standard width
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
答案 0 :(得分:0)
最小的interitem间距就是它,它是最小的,但如果有额外的空间,UICollectionViewFlowLayout会在项之间分配它。您应该创建自己的UICollectionViewLayout具体实例,而不是使用UICollectionViewFlowLayout集合视图附带的默认UICollectionViewLayout,然后您可以将所有额外空间分配到左侧或右侧,而不是分配它像UICollectionViewFlowLayout之类的元素之间的确实。