UITableview Cell 动画只播放一次

Uda*_*iya 4 animation uitableview ios swift

我只想UITableViewCell在第一次显示时动画一次。

我的代码:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    cell.alpha = 0
    let transform = CATransform3DTranslate(CATransform3DIdentity, 0, 200, 0)
    cell.layer.transform = transform

    UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
        cell.alpha = 1
        cell.layer.transform = CATransform3DIdentity
    })
}
Run Code Online (Sandbox Code Playgroud)

动画效果很好,但问题是,当用户向上滚动方向时,由于单元格被重用,动画也会被执行。这看起来不太好。

我想为每个单元格显示一次动画,我该如何实现?

Mah*_*dra 8

您需要记录为其完成动画的单元格,您可以维护一个数组...

为此创建一个属性。

var arrIndexPath = [IndexPath]()
Run Code Online (Sandbox Code Playgroud)

然后执行以下操作:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {

if arrIndexPath.contains(indexPath) == false {
        cell.alpha = 0
        let transform = CATransform3DTranslate(CATransform3DIdentity, 0, 200, 0)
        cell.layer.transform = transform

        UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseOut, animations: {
            cell.alpha = 1
            cell.layer.transform = CATransform3DIdentity
        })

        arrIndexPth.append(indexPath)
    }
} 
Run Code Online (Sandbox Code Playgroud)