我有一个动画问题,因为我想要有不同端点的相同动画,在完成上一个动画时调用,并且在没有轻微停止的情况下顺利执行。
让我详细说明示例代码和注释。
Func animate()
{
Start animation(completionHandler: {
If condition is true
Repeat the animation and check after it finishes
}
}
但是这个代码的问题在于,在完成第一个动画和开始另一个动画之间,会有一个分裂的第二个停止,这不是平滑的运动。例如,我有一个关于零点的视图,用动画移动到A点(x:100,y:100),然后它会在到达A点后接收B点(x:500,y:900)将停止一瞬间然后移动到B点。因为这些点是动态的,我不知道是否有新的点,如果我这样做,我不会事先知道坐标,所以我需要保持逻辑动态和保持动画在点之间平滑。
我尝试了许多逻辑,结果不是我想要的东西。我面对平滑排队的动画遇到的问题是:
我试过带有关键帧的动画,但由于我事先并不知道所有的动画,所以这不起作用。
我可以帮助您顺利实现动态动画吗?
你自己的伪代码回答了你的问题。只需测试您的条件,如果您需要再次制作动画,请计算新的起点和终点并再次制作动画:
func animate(start:Int, end:Int) {
UIView.animate(withDuration: 5, animations: {
// animate here based on new start and end
}, completion: { _ in
var weShouldDoItAgain = false
// figure out if we should do it again
// if so, change weShouldDoItAgain to true
if weShouldDoItAgain {
var start = start // and now change it to new value
var end = end // and now change it to new value
self.animate(start:start, end:end)
}
})
}
只需更改所有值和类型以适合您的使用案例。