迅捷-在效果减半的UICollectionView单元上应用效果

时间:2019-07-15 14:08:28

标签: ios swift uicollectionview cell effect

我的collectionView中有5个单元格,但我只显示2.5个单元格

例如,在我的collectionView中,我有这个:[] [] [

'[]'代表我的collectionView中的一个单元格。我们可以水平滚动以查看下一个单元格。

我想要的是对不可见的最后一个单元格应用一些不透明效果,以使界面平滑。

我该怎么做?

编辑:我想要的样品

enter image description here

但是当切成两半的细胞完全可见(不再切开)时,透明效果将消失,下一个切成两半的细胞将具有相同的效果

谢谢 最好的问候,

1 个答案:

答案 0 :(得分:0)

使用此代码,我已经对其进行了测试。

//make this variable global
var previousIndexPath : IndexPath = IndexPath()


func scrollViewDidScroll(_ scrollView: UIScrollView) {

    let indexPaths = fullyVisibleCells(collectionView)
    if !previousIndexPath.isEmpty {

        // Reset the Cell with transparent color
        let cell = collectionView.cellForItem(at: previousIndexPath) as! collectionViewCell
        cell.baseView.backgroundColor = .white //Here I used White color 
    }
    if !indexPaths.isEmpty {

        // Highlight the Cell with Desired color
        let cell = collectionView.cellForItem(at: indexPaths.first!) as! collectionViewCell
        cell.baseView.backgroundColor = .red // Here I have used Red color
        previousIndexPath = indexPaths.first!

    }

}

func fullyVisibleCells(_ inCollectionView: UICollectionView) -> [IndexPath] {

    var returnCells = [IndexPath]()

    var vCells = inCollectionView.visibleCells
    vCells = vCells.filter({ cell -> Bool in
        let cellRect = inCollectionView.convert(cell.frame, to: inCollectionView.superview)
        return inCollectionView.frame.contains(cellRect)
    })

    vCells.forEach({
        if let pth = inCollectionView.indexPath(for: $0) {
            returnCells.append(pth)
        }
    })

    return returnCells

}

First Second