J'essaye d'animer les modifications textColor d'UILabel en utilisant UIView.animate. Cependant, rien ne change lorsque j'essaye d'utiliser UIView. Voici mon code:
titleLabel.textColor = UIColor(red: 104/250, green: 155/250, blue: 121/250, alpha: 1)
UIView.animate(withDuration: 1.0, animations: {
self.titleLabel.textColor = UIColor(red:206/255, green: 206/255, blue: 206/255, alpha: 1.0)
Je m'attends à ce que la couleur de l'étiquette passe à une couleur verdâtre, puis revienne à la couleur grise qu'elle était auparavant. Merci d'avance pour votre aide!
3 Réponses :
Essayer
UIView.animate(withDuration: 1.0, animations: {
self.titleLabel.textColor = UIColor(red:206/255, green: 206/255, blue: 206/255, alpha: 1.0)
self.view.layoutIfNeeded()
}
TextColor n'est pas censé être animable dans la documentation donc vous devez exécuter le code d'animation ci-dessous.
Raison :
La raison pour laquelle textColor n'est pas animable est UILabel utilise un CALayer normal au lieu d'un CATextLayer. vous avez donc deux options
let changeColor = CATransition()
changeColor.duration = 1
CATransaction.begin()
CATransaction.setCompletionBlock {
self.titleLabel.layer.add(changeColor, forKey: nil)
self.titleLabel.textColor = UIColor(red:206/255, green: 206/255, blue: 206/255, alpha: 1.0) }
titleLabel.textColor = UIColor(red: 104.0/255.0, green: 155.0/255.0, blue: 121.0/255.0, alpha: 1.0)
CATransaction.commit()
La propriété textColor n'est pas spécifiée comme étant animable dans la documentation des développeurs Apple, donc je ne pense pas que vous puissiez le faire avec un simple bloc UIView animations .
Vous pouvez utiliser UIView transition à la place.
Code:
UIView.transition(with: self.titleLabel, duration: 1.0, options: .transitionCrossDissolve, animations: {
self.titleLabel.textColor = UIColor(red: 104/250, green: 155/250, blue: 121/250, alpha: 1)
}, completion: { _ in
self.titleLabel.textColor = UIColor(red:206/255, green: 206/255, blue: 206/255, alpha: 1.0)
})
J'espère cela vous aidera. Faites-moi savoir si vous rencontrez toujours un problème.
Pouvez-vous publier un enregistrement d'écran de ce qui est affiché en ce moment? L'animation ne fonctionne pas?
@AmirKhan Oui, l'animation ne fonctionne tout simplement pas. Il n'y a rien de spécial.
Vous avez votre point. Vous voulez une simple transformation de couleur. Vérifiez ma réponse ci-dessous.