Swift UIView animateWithDuration完成闭包立即调用

时间:2014-09-02 15:01:35

标签: ios uiview swift core-animation

我希望在指定的持续时间之后调用此UIView动画的完成闭包,但它似乎是立即触发......

 UIView.animateWithDuration(
        Double(0.2),
        animations: {
            self.frame = CGRectMake(0, -self.bounds.height, self.bounds.width, self.bounds.height)
        },
        completion: { finished in
            if(finished) {
                self.removeFromSuperview()
            }
        }
    )

还有其他人经历过这个吗?我已经读过其他人使用中心而不是框架来移动视图更成功,但是我也遇到了同样的问题。

2 个答案:

答案 0 :(得分:10)

对于遇到此问题的任何其他人,如果有任何事情正在中断动画,则立即调用完成闭包。在我的情况下,这是由于与自定义segue展开的视图控制器的模态转换略有重叠。使用delay的{​​{1}}部分对我没有任何影响。我最终使用GCD将动画延迟了几分之一。

UIView.animateWithDuration(0.3, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations:{}

答案 1 :(得分:0)

我最终通过将动画从hitTest()移动到touchesBegan()

中的UIView来解决了这个问题