Ios 点击时无法设置选定集合视图单元格的动画

Ios 点击时无法设置选定集合视图单元格的动画,ios,swift,uicollectionview,uicollectionviewcell,Ios,Swift,Uicollectionview,Uicollectionviewcell,这是一个简单的问题,我似乎无法解决这个问题 我在集合视图中有一个单元格列表,当我点击它时,我只希望单元格高亮显示一段时间,然后消失,只需点击一个动画即可 我试着在didSelectItemAt中更改背景,但它似乎突出显示了错误的单元格 override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { let cell = collectionView.c

这是一个简单的问题,我似乎无法解决这个问题

我在集合视图中有一个单元格列表,当我点击它时,我只希望单元格高亮显示一段时间,然后消失,只需点击一个动画即可

我试着在didSelectItemAt中更改背景,但它似乎突出显示了错误的单元格

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath)
        UIView.animate(withDuration: 0.5, animations: {
            cell?.backgroundColor = .lightGray
        }, completion: {
            (value: Bool) in
            cell?.backgroundColor = .white
        })
}

我还尝试了从堆栈中找到的多个东西,但都不起作用。

BackgroundColor对于任何单元格都不可设置动画。一种解决方案是设置背景视图颜色并设置其alpha动画。您还可以插入自己的视图作为背景,并在相反方向上设置其字母的动画,以创建更改

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt 
indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath)
    UIView.animate(withDuration: 0.5, animations: {
        cell?.backgroundColor = UIColor.lightGray.cgColor
    }, completion: {
        (value: Bool) in
        cell?.layer.backgroundColor = UIColor.white.cgColor
    })
}
  • 您可以使用建议的
    alpha
    属性来显示这一点

    UIView.animate(withDuration: 0.5, animations: {
        cell.backgroundColor = .darkGray
        cell.alpha = 0.7
     }, completion: {
        (value: Bool) in
        cell.alpha = 1
     })
    }
    

动画不是真正的问题。我不知道谁会支持这个答案。你的问题听起来像是动画问题。也许可以更改问题?是在索引之前还是之后突出显示单元格?检查这个