tableview的最后一个单元格内的动画

时间:2017-08-15 12:42:21

标签: ios

我有桌面视图。在单元格内部,我有一种方法可以在单元格中设置动画视图。

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中遗漏了一些东西,因此我看到这个从零到初始大小的故障。

如何解决?

1 个答案:

答案 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()
          }
     }
}

希望这有帮助