我有一个动画,我最近发现它不工作
//time is a variable used in my code
UIView.animate(withDuration: time, delay: 0, options: [.curveLinear, .allowUserInteraction], animations: {
//this class is ofType UIScrollView
self.setContentOffset(CGPoint(x: self.contentSize.width-self.frame.width, y: 0), animated: false)
//Completion Handler
}, completion: { finished in
//It's always true, not sure a way to fix this
if(finished ) {
但是,在我的代码后面,我有一个方法可以删除某些动画,特别是从此 scrollView 中。
self.layer.removeAllAnimations()
它被调用了,我认为它应该是上面的
if(finished ) { //Here
return false,所以不应该进去finished里面。但是,完成总是正确的。无论我是取消这个动画,还是继续这个动画,不管我对动画做了什么,完成处理程序总是真实的。关于此事的任何提示?
最佳答案
您对 setContentOffset 的调用指定了 animated:false,如果这是您要更改的唯一属性,则没有实际的动画在进行,因此对 .animate(...) 的调用将始终以 true 值完成.如果您使用 animated:true 设置此属性(或另一个属性)并且您的持续时间太短而动画无法完成,那么它可能会以参数的 false 值完成。
关于swift - UIView block 动画完成始终为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44478635/