在Swift中按下按钮时,将对象重置为固定(x,y)坐标

时间:2017-06-06 00:28:49

标签: swift xcode animation uiview

我有一个填满屏幕的框和一个按钮。当我按下按钮时,我希望盒子慢慢向下移动,直到它不再可见。如果在此动画期间按下按钮,我希望按钮返回其原始位置,然后恢复动画。我有以下代码:

@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秒钟才能离开屏幕。但是,如果我在动画结束前按下按钮,则框会捕捉到比原始位置更高的位置。例如,如果我按下按钮,而盒子只有一半离开屏幕,它会捕捉到顶部,屏幕上方的一半盒子将恢复向下滑动。我正在寻找的代码会将盒子按到原来的位置,所以无论按下按钮多快或多少次,它都不会高于其原始位置。

1 个答案:

答案 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
    }
}