我有一个水平collectionView。 项目宽度的大小取决于数组的数量。就是这样。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
var divider : CGFloat = 2.0
if(categories.count == 1){
divider = 1.0
}else if(categories.count == 2){
divider = 2.0
}else{
divider = 3.0
}
let width = ((UIScreen.main.bounds.width - (Constants.Spacing.lineSpacing * 2)) / divider) - 1
return CGSize(width: width, height: CatergoryHorizontalHeader.viewHeight)
}
如果我打电话一次,它的效果很好。 问题是,如果用户按下按钮,则必须更改类别和collectionView。
This is how it looks if I call it the first time the divider is 2
Now I am pressing the Button and the divider is 3
Now if I want to have the divider back to 2 it does not layout
如果我在sizeForItemAt中打印宽度,应该是这样(就像第一个Image中一样),但是显示的宽度就像分隔符是3。
我已经尝试调用.setNeedsDisplay()等。
其他信息: 如果两种情况下的分频器均为2,则其与3完全相同