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