Анимация UIView - застревание в цикле рекурсивной анимации: Swift

Я застрял в цикле анимации. У меня есть кнопка с именем [stopBtn] и UIView с именем [backgroundView]. Я хочу оживить цвет фона UIView с момента загрузки ViewController до момента его уничтожения. в функции 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 подключен к другому ViewController в раскадровке. Я попытался создать IBAction, но это не сработало. Я также пытался вывести stopBtn в начало подпредставления [self.view.bringSubviewToFront(self.stopBtn)].


person Bhavik P.    schedule 09.12.2015    source источник


Ответы (1)


Просматривая документацию, я обнаружил, что использование animateWithDuration временно отключает взаимодействие с пользователем для анимируемых представлений. Если вы хотите разрешить взаимодействие с пользователем, вы должны установить константу UIViewAnimationOptionAllowUserInteraction в параметре options.

person Tyler    schedule 09.12.2015
comment
Этот ответ был совершенно феноменальным. Спасибо, Тайлер! - person Bhavik P.; 09.12.2015