0

我正在尝试多次移动图像。这就是我尝试实现它的方式。

override func viewDidAppear(animated: Bool) {

        UIView.animateWithDuration(1, animations: { () -> Void in

            self.sattelite.center.x = 50
            self.sattelite.center.y = 100

            self.sattelite.center.x = 50
            self.sattelite.center.y = 50

            self.sattelite.center.x = 50
            self.sattelite.center.y = 300



        })

}

然而 animatewithduration 方法只执行其中一个动作。有没有办法为图像视图的所有三个动作设置动画?谢谢。

4

3 回答 3

2

您可以轻松链接动画;在完成时开始另一个:

  • 这里有一个插图:

    //1st animation
    UIView.animateWithDuration(1.0,
        delay: 0.0,
        options: .CurveEaseInOut | .AllowUserInteraction,
        animations: {
             //some code ex : view.layer.alpha = 0.0
        },
        completion: { finished in
    
            //second animation at completion
            UIView.animateWithDuration(1.0
                , delay: 0.0,
                , options: .CurveEaseInOut | .AllowUserInteraction,
                , animations: { () -> Void in
    
                   //some code ex : view.layer.alpha = 1.0
    
                }
                ,   completion: { finished in
    
                    //third animation at completion
                    UIView.animateWithDuration(1.0,
                        delay: 0.0,
                        options: .CurveEaseInOut | .AllowUserInteraction,
                        animations: {
                             //some code ex : view.layer.alpha = 0.0
                        },
                        completion: { finished in
                        //FINISH : 3 animations!!!
                    })
    
    
            })
    })
    
于 2015-04-21T19:44:20.970 回答
1

您需要使用完成链接动画或使用关键帧动画

于 2015-04-21T19:43:52.423 回答
1

使用已完成的动画版本:

class func animateWithDuration(_ duration: NSTimeInterval,
                    animations animations: () -> Void,
                    completion completion: ((Bool) -> Void)?)

只做第一个动画,animations然后在completion. 第三个进入第二个完成。

所以基本上是一个动画链,每个动画在前一个完成时开始。

于 2015-04-21T19:46:52.927 回答