2015-08-06 2 views
1

Я новичок в Swift, и я бы хотел использовать touchesBegan, чтобы остановить все анимации от viewDidAppear, но это не помогло удалить self.view.layer.removeAllAnimatoins() и ускорить анимацию.Использование TouchesBegan для остановки анимации в viewDidAppear Swift

Я делаю это путем помещения self.view.layer.removeAllAnimatoins() внутри touchesBegan, а затем установите все альфа в нормальное состояние.

Подобно этому,

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 

    self.view.layer.removeAllAnimations() 

    self.btnO.alpha = 1.0 
    self.btnX.alpha = 1.0 

    self.titleMultiplayer.alpha = 1.0 

    self.questionOX.alpha = 1.0 
} 

И это еще один код, ускоряя анимации,

import UIKit 
import QuartzCore 

class ViewController: UIViewController { 

    @IBOutlet var titleMultiplayer: UILabel! 

    @IBOutlet var questionOX: UILabel! 

    @IBOutlet var btnO: UIButton! 
    @IBOutlet var btnX: UIButton! 


    override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 

     titleMultiplayer.alpha = 0.0 

     questionOX.alpha = 0.0 

     btnO.alpha = 0.0 
     btnX.alpha = 0.0 

    } 

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 

     UIView.animateWithDuration(0.001, animations: { 

      self.titleMultiplayer.alpha = 1.0 

      self.btnO.alpha = 1.0 
      self.btnX.alpha = 1.0 

      self.questionOX.alpha = 1.0 

     }) 


    } 


    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 



     UIView.animateWithDuration(4.0, delay: 0.0, options: UIViewAnimationOptions.AllowUserInteraction, animations: { 

      self.titleMultiplayer.alpha = 1.0 

      }, completion: nil) 


     UIView.animateWithDuration(4.0, delay: 2.3, options: UIViewAnimationOptions.AllowUserInteraction, animations: { 

      self.btnO.alpha = 1.0 

      }, completion: nil) 

     UIView.animateWithDuration(4.0, delay: 4.3, options: UIViewAnimationOptions.AllowUserInteraction, animations: { 

      self.btnX.alpha = 1.0 

      }, completion: nil) 

     UIView.animateWithDuration(4.0, delay: 6.3, options: UIViewAnimationOptions.AllowUserInteraction, animations: { 

      self.questionOX.alpha = 1.0 

      }, completion: nil) 



    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 



    } 

Интересно, если это возможно, чтобы сделать что-то подобное с viewDidAppear.

Просьба помочь и предложить мне.

Большое спасибо:]

ответ

0

Вы можете удалить текущую анимацию из слоя компонента UI с removeAllAnimations(), а затем вы можете делать все, что вы хотите.

В вашем случае вы можете удалить анимацию таким образом, в методе touchesBegan:

btnO.layer.removeAllAnimations() 
btnX.layer.removeAllAnimations() 
titleMultiplayer.layer.removeAllAnimations() 
questionOX.layer.removeAllAnimations() 

Вы можете удалить текущую анимацию из слоя компонента UI с removeAllAnimations, а затем вы можете делать все, что вы хотите.

Смежные вопросы