2017-06-06 5 views
0

私は画面を塗り潰すボックスとボタンを持っています。ボタンを押すと、ボックスが見えなくなるまでゆっくりと下に移動します。このアニメーション中にボタンを押すと、ボタンを元の位置に戻してアニメーションを再開します。スウィフトでボタンを押したときに固定(x、y)座標にリセットするオブジェクトを取得

@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

、最初のアニメーションを停止するブロックをリセットし、新しいアニメーションを開始:

@IBAction func button(_ sender: UIButton) { 
    backgroundthing.layer.removeAllAnimations() 
    backgroundthing.frame.origin.y = 0 
    UIView.animate(withDuration: 4.0) { 
     self.backgroundthing.frame.origin.y = 667 
    } 
} 
関連する問題