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

UIView animate completion block called twice with TRUE

非常简单的动画:

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
});

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

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

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

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

如果您不止一次看到该消息,您可以将断点设置为每次都停止并查看调用堆栈以了解调用的来源。

如果它没有被调用两次,可能是时候提交雷达了……