Sto scrivendo un'app per fotocamera e ho problemi a mostrare il riquadro di messa a fuoco quando l'utente tocca lo schermo.Come annullare l'animazione precedente quando viene attivato uno nuovo?
mio codice è (in rapido):
self.focusView.center = sender.locationInView(self.cameraWrapper)
self.focusView.transform = CGAffineTransformMakeScale(2, 2)
self.focusView.hidden = false
UIView.animateWithDuration(0.5, animations: { [unowned self]() -> Void in
self.focusView.transform = CGAffineTransformIdentity
}, completion: { (finished) -> Void in
UIView.animateWithDuration(0.5, delay: 1.0, options: nil, animations: {() -> Void in
self.focusView.alpha = 0.0
}, completion: { (finished) -> Void in
self.focusView.hidden = true
self.focusView.alpha = 1.0
})
})
Tuttavia, se l'uso toccare lo schermo consecutivamente quando l'animazione precedente non finisce, la vecchia e la nuova animazione mescolare e la vista attenzione sarà comportarsi in modo strano ad esempio scomparirà molto velocemente.
Qualcuno potrebbe dirmi come annullare l'animazione precedente, in particolare il blocco di completamento precedente?
tenta di utilizzare una variabile BOOL membro e farlo sì nell'animazione basata sul sì e non provare ad animarlo – Tendulkar
Prova UIView.setAnimationBeginsFromCurrentState (true); prima di avviare l'animazione – Jageen
possibile duplicato di [Come annullare l'animazione basata su blocco UIView?] (http://stackoverflow.com/questions/9569943/how-to-cancel-uiview-block-based-animation) –