UIView块动画完成始终为真。

4

我最近发现我的一个动画不起作用了

//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。但是,finished总是为true。无论我取消这个动画,继续这个动画,不管我对动画做什么,完成处理程序始终为true。请问有关此事的任何提示吗?

1个回答

2

您的setContentOffset调用指定了animated:false,如果这是您正在更改的唯一属性,则没有实际动画正在进行,因此对.animate(...)的调用将始终以true的值完成。如果使用animated:true设置此属性(或另一个属性)并且您的持续时间太短,则可能会以参数false的值完成。


你这个狡猾的家伙!甚至没有意识到,该死的自动完成哈哈!回家后会尝试,如果合适就会奖励你!-- 这是我的唯一动画对象。 - impression7vx
我正在授予答案,但从技术上讲它并没有解决我的问题,因为setContentOffSet:animated:是一个非常独特的方法,如果animated为true,则无法控制其速度。 - impression7vx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接