非常简单的动画:
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
});
动画效果很好。但是,完成块被调用两次。这也很好,我明白我需要检查布尔值,看看它是否真的完成了。好吧,不仅完成块被调用了两次,而且两次都完成了。
我怎么知道动画是否真的完成了?
答案 0 :(得分:0)
每次动画完成时,只应调用一次完成块。确保动画不会被多次调用。
在您列出的代码的开头添加一个断点,编辑它以记录一些消息,例如"动画开始"并在评估后将其设置为继续。
如果您多次看到该消息,则可以将断点设置为每次停止并查看调用堆栈以查看呼叫的来源。
如果没有两次被叫,可能是时候提交雷达......