使用animatewithduration移动图像视图

时间:2015-04-21 19:33:25

标签: ios xcode swift uiimageview animatewithduration

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

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方法只执行其中一个动作。有没有办法动画图像视图的所有三个动作?感谢。

3 个答案:

答案 0 :(得分: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!!!
                    })
    
    
            })
    })
    

答案 1 :(得分:1)

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

答案 2 :(得分:1)

使用已完成的动画版本:

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

仅在animations上执行第一个动画,然后在completion中开始第二个动画。第三个是完成第二个。

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