我有桌面视图。在单元格内部,我有一种方法可以在单元格中设置动画视图。
func animateCell() {
UIView.animate(withDuration: 0.4, animations: { [weak self] in
self?.quantityBackround.transform = CGAffineTransform(scaleX: 25, y: 25)
}) { [weak self] _ in
UIView.animate(withDuration: 0.1) {
self?.quantityBackround.transform = CGAffineTransform.identity
}
}
}
我也有prepareForReuse()
override func prepareForReuse() {
quantityBackround.transform = CGAffineTransform.identity
}
当数据源数组发生变化时,动画必须仅适用于最后一个单元格,并且我会在属性观察器中执行此操作(在将某些内容添加到数组时触发)
guard let cell = checkTableView.cellForRow(at: IndexPath(row: viewModel.checkManager.check.count - 1, section: 0)) as? CheckItemTableViewCell else { return }
cell.animateCell()
所有这一切都很好。
我遇到的一个问题是,当重新加载tableView时,所有单元格中的所有背景视图都会从零大小扩展到其初始值。最后一个单元格动画确定。
我认为我在prepareForReuse中遗漏了一些东西,因此我看到这个从零到初始大小的故障。
如何解决?
答案 0 :(得分:1)
您需要实现UITableViewDelegate
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
//here check if your this cell is the last one, something like this
if (indexPath.row == yourDataSourceArray.count - 1)
{
if let customCell = cell as? CheckItemTableViewCell{
customCell.animateCell()
}
}
}
希望这有帮助