使用 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
上开始第二个动画。第三个完成第二个。
所以基本上是一个动画链,每个动画在前一个结束时开始。
我正在尝试多次移动图像。这就是我尝试实现它的方式。
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
上开始第二个动画。第三个完成第二个。
所以基本上是一个动画链,每个动画在前一个结束时开始。