集合视图第一个像元大小问题

时间:2018-08-27 07:48:34

标签: ios swift uicollectionview uicollectionviewflowlayout

我必须根据我的api响应隐藏uicollectionview的某些单元格。

我正在根据我的json响应值在collectionview的sizeForItemAtIndexPath方法中将单元格大小设置为零。

但是即使将大小设置为零,位于第0个索引的单元格也始终可见。

我无法过滤出并从阵列中删除数据。我需要一些操作的数据。

我的UICollectionView数据源方法。

func numberOfSections(in collectionView: UICollectionView) -> Int {
    return 5
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 5
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! testCell
    cell.lblTest.text = "\(indexPath.item)"
    return cell
}

我的流布局委托方法。

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        if (indexPath.section == 0 && indexPath.item == 0) || (indexPath.section == 1 && indexPath.item == 0){
            return CGSize(width: 0, height: 0)
        }
        return CGSize(width: 50, height: 50)
    }

预期结果是0处第0个索引处的单元格被隐藏,而1部分则被隐藏,但仍显示。 enter image description here

2 个答案:

答案 0 :(得分:1)

您不应通过尝试将大小设置为0来执行此操作。如果将其设置为0,则底层代码将读为试图为您自动调整大小(这就是为什么将其设置为较小值的原因 close 设为0几乎可以正常工作)。您实际要做的只是调整数据源。因此,当它要求提供物品数量时,返回的数量不包含您要隐藏的物品,而cellForItem应该只考虑到该物品不存在。

答案 1 :(得分:0)

您必须将其设置为接近0的数字,例如0.1、0.01。