UIView使用TRUE调用两次动画完成块

时间:2017-09-20 18:09:42

标签: ios swift uiviewanimation

非常简单的动画:

UIView.animate(withDuration: 3, delay: 0, options: .curveLinear, animations: {
  self.imageViewA.snp.remakeConstraints({ (make) in
    make.bottom.equalTo(50);
  })
  self.layoutIfNeeded();
}, completion: {(done) in
  print(done); //called twice, both times as true
});

动画效果很好。但是,完成块被调用两次。这也很好,我明白我需要检查布尔值,看看它是否真的完成了。好吧,不仅完成块被调用了两次,而且两次都完成了。

我怎么知道动画是否真的完成了?

1 个答案:

答案 0 :(得分:0)

每次动画完成时,只应调用一次完成块。确保动画不会被多次调用。

在您列出的代码的开头添加一个断点,编辑它以记录一些消息,例如"动画开始"并在评估后将其设置为继续。

如果您多次看到该消息,则可以将断点设置为每次停止并查看调用堆栈以查看呼叫的来源。

如果没有两次被叫,可能是时候提交雷达......