UIAnimation循环无休止,直到我按下按钮......怎么样?

时间:2015-06-24 15:18:22

标签: ios swift animation

我有以下动画,我想循环,直到我按下按钮,然后我希望它停止动画。事实是,当我反复按下按钮时,动画会变得怪异而且超出它的速度......任何帮助解决这个问题并让它更流畅和正常吗?谢谢! 这是我的代码:

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

    }

2 个答案:

答案 0 :(得分:0)

按下按钮时尝试删除与视图相关的动画怎么样?

yourView.layer.removeAllAnimations()

如果重新启动动画,则需要将self.blueBar.center点重置为其原始值。

但你应该更好地使用Core Animation来控制你的动画

答案 1 :(得分:0)

你的代码乱七八糟。

当前的问题在我看来,你的touchesBegan方法永远不会将timerIsGoing设置为true,所以如果你再次按下按钮,它会再次调用animate()

为什么在按钮上使用touchesBegan?该代码位于哪个类? UIButton的自定义子类?你的视图控制器?

让你按照与按钮中的touchUpInside事件绑定的IBAction方法中的代码更有意义。