我有以下动画,我想循环,直到我按下按钮,然后我希望它停止动画。事实是,当我反复按下按钮时,动画会变得怪异而且超出它的速度......任何帮助解决这个问题并让它更流畅和正常吗?谢谢! 这是我的代码:
func animate(){
UIView.animateWithDuration(3, animations: {self.blueBar.center = CGPointMake(self.blueBar.center.x + 550, self.blueBar.center.y + 550)
}, completion: {(value: Bool) in
if !self.buttonHasBeenPressed {
self.animate()
}
})
}
编辑:触发和停止动画的动作的代码:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
if !timerIsGoing {
buttonHasBeenPressed = false
animate()
futureTime = NSDate.timeIntervalSinceReferenceDate() + 5.0000000
timer = NSTimer.scheduledTimerWithTimeInterval(
0.02,
target: self,
selector: ("update"),
userInfo: nil,
repeats: true)
} else {
if labelValue != 0.00000 {
} else {
}
timer.invalidate()
if labelValue == -0 {
labelValue = 0
}
labelTime.text = String(format: "%0.5f", labelValue)
buttonHasBeenPressed = true
timerIsGoing = false
}
答案 0 :(得分:0)
按下按钮时尝试删除与视图相关的动画怎么样?
yourView.layer.removeAllAnimations()
如果重新启动动画,则需要将self.blueBar.center点重置为其原始值。
但你应该更好地使用Core Animation来控制你的动画
答案 1 :(得分:0)
你的代码乱七八糟。
当前的问题在我看来,你的touchesBegan方法永远不会将timerIsGoing设置为true,所以如果你再次按下按钮,它会再次调用animate()
。
为什么在按钮上使用touchesBegan?该代码位于哪个类? UIButton的自定义子类?你的视图控制器?
让你按照与按钮中的touchUpInside事件绑定的IBAction方法中的代码更有意义。