使用 animatewithduration 移动图像视图

using animatewithduration to move image view

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

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 方法只执行其中一个动作。有什么方法可以为图像视图的所有三个运动设置动画吗?谢谢

您需要将完成的动画链接起来或使用关键帧动画

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

  • 这里有一个例子:

    //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!!!
                    })
    
    
            })
    })
    

使用完成的动画版本:

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

只在 animations 上制作第一个动画,在 completion 上开始第二个动画。第三个完成第二个。

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