动画UIView - 陷入递归动画循环:Swift

时间:2015-12-09 19:39:41

标签: swift uiview uianimation

我陷入了动画循环。我有一个名为[stopBtn]的按钮和一个名为[backgroundView]的UIView。我想要从加载ViewController到销毁它的时间为UIView的背景颜色设置动画。在viewDidAppear函数中,我通过编写animateView()

来启动脉动
func animateView(){
    UIView.animateWithDuration(1.0, animations: {
        self.backgroundView.backgroundColor = UIColor.blackColor()

        self.view.bringSubviewToFront(self.stopBtn)
        }, completion: {
            (Completed: Bool) -> Void in
            UIView.animateWithDuration(1.0, delay: 0, options: UIViewAnimationOptions.CurveLinear, animations: {
                self.backgroundView.backgroundColor = UIColor(red: 39, green: 117, blue: 0, alpha: 1)

                self.view.bringSubviewToFront(self.stopBtn)
                }, completion: {
                    (Completed : Bool) -> Void in

                    self.animateView()
            })
    })
}

@IBAction func stopBtnPressed(sender: UIButton) {
    print("pressed")
}

我的问题是为什么我的stopBtn不起作用?我已经知道它停留在循环中,这就是为什么我想帮助正确设置动画(可能在另一个线程或其他东西上并让主线程保持打开状态)。

stopBtn连接到Storyboard中的另一个ViewController。我试过创建一个IBAction但是没有用。我还试图将stopBtn带到子视图[self.view.bringSubviewToFront(self.stopBtn)]的前面。

1 个答案:

答案 0 :(得分:1)

查看文档,我发现使用animateWithDuration会暂时禁用要动画的视图的用户交互。如果要启用用户交互,则必须在options参数中设置UIViewAnimationOptionAllowUserInteraction常量。