我想创建一个简单的UICollectionView;一个单元格,有一个标签。单元格和标签宽度应根据文本的宽度增加/减少。标签之间的间距应为1。
我尝试使用以下代码执行此操作:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let ab = items[indexPath.item] --> The string of the cell
var width1 = StringToWidth(SomeString: ab) // Calculate the width of the text
width1 = width1 * 1.1 // Looks better
return CGSize(width: width1, height: 50)
}
//Lines
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat{
return 1
}
// Spaces
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat{
return 1
}
在故事板中,我将min spacing设置为集合视图的0。
结果:
我认为我一定做错了我去google找到了 CellSizeToFitLabel
然而,这会改变单元格的高度而不是宽度(它的工作顺序为btw)。所以我将static preferredMaxLayoutWidth = 50更改为StringToWidth(SomeString:label.text!)我很想知道它为何如此空间以及如何解决它