J'ai un champ de texte où l'utilisateur doit entrer des informations. Et une étiquette qui pointe l'utilisateur vers le champ de texte (comme un indice).
Je souhaite arrêter l'animation et supprimer l'étiquette d'indication une fois que l'utilisateur a appuyé sur le champ de texte pour saisir des données.
Il y a une animation répétée sur l'étiquette de texte. A été créé par:
override func viewDidLoad() {
super.viewDidLoad()
textInput.addTarget(self, action: #selector(CalculatorViewController.removeAnimation(_:)), forControlEvents: UIControlEvents.TouchDown)
self.hintLabel.alpha = 0.0
UIView.animateWithDuration(1.5, delay: 0, options: .Repeat
, animations: ({
self.hintLabel.alpha = 1.0
}), completion: nil
)
Après cela, j'ai créé une fonction pour supprimer l'annotation
func removeAnimation(textField: UITextField) {
view.layer.removeAllAnimations()
self.view.layer.removeAllAnimations()
print("is it working?!")
}
Devrait fonctionner selon la documentation.
Mon étiquette continue de clignoter même si je vois la chaîne imprimée dans la console. Je suppose que le problème est que l'animation est répétée, mais ne sais pas comment résoudre ce problème.
//Just remove the animation from the label. It will Work
func remove()
{
self.hintLabel.layer.removeAllAnimations()
self.view.layer.removeAllAnimations()
self.view.layoutIfNeeded()
}
Mise à jour:
Si vous voulez devenir nucléaire, vous pouvez également le faire:
func nukeAllAnimations() {
self.view.subviews.forEach({$0.layer.removeAllAnimations()})
self.view.layer.removeAllAnimations()
self.view.layoutIfNeeded()
}