Swift CollectionViewHeader不显示sizeforItem宽度

时间:2018-08-22 08:54:05

标签: swift uicollectionviewcell setneedsdisplay uicollectionviewflowlayout

我有一个水平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完全相同

0 个答案:

没有答案