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)
动画效果很好,但问题是,当用户向上滚动方向时,由于单元格被重用,动画也会被执行。这看起来不太好。
我想为每个单元格显示一次动画,我该如何实现?
您需要记录为其完成动画的单元格,您可以维护一个数组...
为此创建一个属性。
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)
| 归档时间: |
|
| 查看次数: |
1068 次 |
| 最近记录: |