完成关键帧动画后防止视图回弹

时间:2016-04-02 07:51:21

标签: swift core-animation

我有一个视图,我以这样的方式动画,它扩展并移动到视图控制器中的一组新坐标。我这样做是使用关键帧:

UIView.animateKeyframesWithDuration(0.5, delay: 0, options: .CalculationModeCubic, animations: {
    UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: 0.5) {

        //Moving main View
        tappedView.frame = CGRectMake((self.screenSize.width/2)-250, (self.screenSize.height/2)-250, 500, 500)

    }
}, completion: nil)

问题是,一旦动画完成,视图将返回其原始位置和大小。

有没有办法防止在Swift中发生这种情况?

1 个答案:

答案 0 :(得分:0)

如果使用自动布局,则会出现此问题。在这种情况下,最终坐标必须放在完成处理程序中才能工作。

UIView.animateKeyframesWithDuration(0.5, delay: 0, options: .CalculationModeCubic, animations: {
    UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: 0.5) {

        //Moving main View
        tappedView.frame = CGRectMake((self.screenSize.width/2)-250, (self.screenSize.height/2)-250, 500, 500)

    }
}, completion: {(finished: Bool) -> Void in

    tappedView.frame = CGRectMake((self.screenSize.width/2)-250, (self.screenSize.height/2)-250, 500, 500)

})