我有一个填满屏幕的框和一个按钮。当我按下按钮时,我希望盒子慢慢向下移动,直到它不再可见。如果在此动画期间按下按钮,我希望按钮返回其原始位置,然后恢复动画。我有以下代码:
@IBOutlet weak var backgroundthing: UIView!
@IBAction func button(_ sender: UIButton) {
UIView.animate(withDuration: 0.0, animations: {self.backgroundthing.frame.origin.y = 0}, completion: nil)
UIView.animate(withDuration: 4.0, animations: {self.backgroundthing.frame.origin.y = 667}, completion: nil)
}
如果我按下按钮一次,它就可以正常工作"并且该框需要4秒钟才能离开屏幕。但是,如果我在动画结束前按下按钮,则框会捕捉到比原始位置更高的位置。例如,如果我按下按钮,而盒子只有一半离开屏幕,它会捕捉到顶部,屏幕上方的一半盒子将恢复向下滑动。我正在寻找的代码会将盒子按到原来的位置,所以无论按下按钮多快或多少次,它都不会高于其原始位置。
答案 0 :(得分:0)
首先停止动画,重置块,开始一个新动画:
@IBAction func button(_ sender: UIButton) {
backgroundthing.layer.removeAllAnimations()
backgroundthing.frame.origin.y = 0
UIView.animate(withDuration: 4.0) {
self.backgroundthing.frame.origin.y = 667
}
}