2017-06-06 29 views
0

我有一個填充屏幕的框和一個按鈕。當我按下按鈕時,我希望盒子慢慢向下移動,直到它不再可見。如果在此動畫期間按下按鈕,我希望按鈕返回到其原始位置,並恢復動畫。我有以下代碼:當在Swift中按下某個按鈕時獲取一個對象以重置爲固定(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 
    } 
} 
相關問題