我正试图让我的动画来回移动。例如,在这样的鱼缸模拟中,我试图让鱼来回移动。我试图让它无限长时间地工作,但鱼只在一个方向上移动而且完成块永远不会被调用。有人可以告诉我一旦鱼到达屏幕的末端或其他方式接近完成后如何调用完成块?
附件是我目前的代码:
UIView.animate(withDuration: fishAnimationDuration, delay: fishAnimationDelay, options: [.allowAnimatedContent, .repeat], animations: {
fish.frame = CGRect(x: fishXPosEnd, y: fishYPos, width: fishWidth, height: fishHeight)
}, completion: { (finished: Bool) in
fish.image = #imageLiteral(resourceName: "fishBack")
UIView.animate(withDuration: fishAnimationDuration, delay: fishAnimationDelay, options: [.allowAnimatedContent], animations: {
fish.frame = CGRect(x: fishXPos, y: fishYPos, width: fishWidth, height: fishHeight)
})
})
答案 0 :(得分:0)
当repeat
在选项中时,不会调用完成块,因为重复动画永远不会完成。
在您的情况下,我会删除repeat
选项。然后在第二个动画的完成处理程序中,调用包含这些动画块的方法,以便再次调用这对动画。