Swift UIView animateWithDuration achèvement de la fermeture, appelé immédiatement
J'attends la fin de la fermeture sur cette UIView d'animation à être appelée après la durée spécifiée, toutefois, il semble être de tir immédiatement...
UIView.animateWithDuration(
Double(0.2),
animations: {
self.frame = CGRectMake(0, -self.bounds.height, self.bounds.width, self.bounds.height)
},
completion: { finished in
if(finished) {
self.removeFromSuperview()
}
}
)
Quelqu'un d'autre a vécu cette situation? J'ai lu que d'autres ont eu plus de succès en utilisant le centre plutôt que sur l'image pour déplacer la vue, cependant, j'ai eu les mêmes problèmes avec cette méthode.
Où voulez-vous exécuter ce code?
Assurez-vous que l'image en fait, modifications, en raison de l'achèvement de bloc est appelé immédiatement quand il n'y a pas d'animation.
Coutumier de la classe UIView. J'anime la vue dans le lieu de commencer avec dans init(), puis le code ci-dessus est appelée lorsqu'un robinet se produit n'importe où. Le cadre est bien en train de changer aussi...
Juste pour ajouter que la même chose se produit également avec différentes animations. par exemple, changement de l'alpha de la vue.
Assurez-vous que l'image en fait, modifications, en raison de l'achèvement de bloc est appelé immédiatement quand il n'y a pas d'animation.
Coutumier de la classe UIView. J'anime la vue dans le lieu de commencer avec dans init(), puis le code ci-dessus est appelée lorsqu'un robinet se produit n'importe où. Le cadre est bien en train de changer aussi...
Juste pour ajouter que la même chose se produit également avec différentes animations. par exemple, changement de l'alpha de la vue.
OriginalL'auteur David Wadge | 2014-09-02
Vous devez vous connecter pour publier un commentaire.
Pour quelqu'un d'autre qui a un problème avec cela, si quoi que ce soit d'interrompre l'animation, la réalisation de fermeture est immédiatement appelé. Dans mon cas, cela était dû à un léger chevauchement avec un modal de la transition de la vue-contrôleur que la coutume segue a été déroulement. À l'aide de la
delay
partie deUIView.animateWithDuration(0.3, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations:{}
a eu aucun effet pour moi. J'ai fini par utiliser le PGCD de retarder l'animation d'une fraction de seconde.OriginalL'auteur cschandler
J'ai résolu ce problème en fin de compte, par le déplacement de l'animation de
hitTest()
et entouchesBegan()
dans leUIView
OriginalL'auteur David Wadge