2015-12-09 4 views
0

Je suis coincé dans une boucle d'animation. J'ai un bouton nommé [stopBtn] et un UIView nommé [backgroundView]. Je veux animer la couleur d'arrière-plan de l'UIView à partir du moment où le ViewController est chargé au moment où il est détruit. en fonction viewDidAppear, je commence par la pulsation écrire animateView()Animation de UIView - coincé dans une boucle d'animation récursive: Swift

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") 
} 

Ma question est que pourquoi mon stopBtn fonctionne pas? Je sais déjà que c'est coincé dans la boucle c'est pourquoi je voudrais aider à animer correctement (peut-être sur un autre fil ou quelque chose et laisser le fil principal ouvert).

stopBtn est connecté à un autre ViewController dans Storyboard. J'ai essayé de créer un IBAction et cela n'a pas fonctionné. J'ai également essayé d'amener stopBtn à l'avant de la sous-vue [self.view.bringSubviewToFront(self.stopBtn)].

Répondre

1

En regardant la documentation, j'ai trouvé que l'utilisation de animateWithDuration désactive temporairement l'interaction de l'utilisateur pour les vues en cours d'animation. Si vous souhaitez activer l'interaction utilisateur, vous devez définir la constante UIViewAnimationOptionAllowUserInteraction dans le paramètre options.

+0

Cette réponse était absolument phénoménale. Merci beaucoup Tyler! –