Comment animer la couleur d'arrière-plan d'un UILabel?
Cela semble comme il se doit le travail, mais ne le fait pas. La couleur vire au vert à la fois.
self.labelCorrection.backgroundColor = [UIColor whiteColor];
[UIView animateWithDuration:2.0 animations:^{
self.labelCorrection.backgroundColor = [UIColor greenColor];
}];
- Pour les futurs lecteurs, ce n'est pas spécifique à UILabel, mais la condition est que d'un point de vue doit commencer avec une couleur d'arrière-plan, même si la couleur est claire. Vous n'avez pas besoin d'animer sur la couche, la UIView.backgroundColor fonctionne très bien, à condition ci-dessus.
Vous devez vous connecter pour publier un commentaire.
Je ne le trouve pas documenté n'importe où, mais il semble que l'
backgroundColor
propriété deUILabel
n'est pas animables, que votre code fonctionne très bien avec la vanille,UIView
. Ce hack semble fonctionner, cependant, aussi longtemps que vous n'avez pas à définir la couleur d'arrière-plan de l'étiquette de la vue elle-même:UILabel
. FWIW,UIButton
se comporte de la même manière que l'étiquette.frame
propriété ne semble pas être animables trop si leUILabel
vient d'un xib. Il fonctionne si elle est créée par programme, même si... bizarre.layer
's en utilisant les propriétésCAAnimation
et pasUIView animate...
fonctions. Ai-je vivre dans un mensonge?Swift
(important) Définir la UILabel de l'arrière-plan de couleur claire (soit au bureau de l'IB ou dans le code). Par exemple:
Animer la couche de couleur d'arrière-plan.
Noter que
CGColor
est ajouté après leUIColor
.Résultat
Vous POUVEZ l'animer, mais j'ai eu d'abord de la définir (par programmation) à clearColor pour une raison quelconque. Sans que l'animation soit ne fonctionne pas ou n'était pas visible.
Je suis de l'animation de la couleur d'arrière-plan d'un UILabel dans un tableau personnalisé de la cellule. Voici le code dans le willDisplayCell méthode. Je ne voudrais pas essayer de mettre de l'animation dans cellForRow, puisque beaucoup de la mise en page obtient bricolé avec par la table.
Voici mon animation de routine:
Swift 3
Pour animer votre étiquette de couleur d'arrière-plan en blanc, vert, configurer votre étiquette comme ceci:
Animer comme ceci:
Pour revenir à l'état initial, de sorte que vous pouvez animer de nouveau, assurez-vous de supprimer les animations:
Ne l'animation de couleur manuellement, à partir d'un NSTimer ou CADisplayLink de rappel à certains raisonnables taux de trame (disons 20 fps). Vous devrez calculer votre propre changement de couleur de la courbe RVB ou HSV basé sur la fraction de temps écoulé sur l'ensemble de l'animation de temps (2,0 secondes dans votre exemple), ou d'utiliser une gamme de 40 couleurs intermédiaires.
S'il vous plaît essayer ce,
Cela fonctionne pour moi.
Je suis récemment tombé sur ce problème une fois de plus et après quelques recherches, j'ai compris que, fondamentalement, rien n'a changé (et ne sera probablement pas dans un avenir prévisible), donc j'ai fini par utiliser Facebook POP-cadre (non seulement) pour que les.
Vous pouvez le faire facilement des animations de propriétés de base à la fois de la vue et de la couche, mais en outre, il offre une transition en douceur entre les couleurs (et en gros tout ce que vous voulez, même vos types personnalisés, avec certains de codage supplémentaire). Donc pour la couleur d'arrière-plan, vous voulez faire quelque chose comme ceci:
Alto, maintenant, vous pouvez animer les couleurs de fond sur tout ce qui a la propriété!
il est dit dans les docs que backgroundColor est animable
http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW131
Ne sais pas vraiment depuis quand.
Si vous ne voulez pas plonger vers le bas dans le Quartz, pour répondre à l'une des prev réponses, créer un vide UIView de la même taille que UILabel et le placer dans le même endroit que la UILabel (et dans l'ordre Z, en vertu de l') et que vous pourrez animer que UIView la couleur d'arrière-plan (j'ai essayé, et ça marche pour moi).
Voici la référence:
Ce que je comprends sur ce est quand votre affichage de l'animation à bloc, puis votre étiquette de vue la couleur de fond est engagé pour être le vert depuis ce temps. Alors, si vous ne modifiez pas l'étiquette de la couleur d'arrière-plan en quelque chose d'autre, alors il sera toujours vert. C'est ce que je suppose
Swift 4.1 UILabel Extension:
Ajouter cette extension à votre code:
Vous devriez l'utiliser comme ceci:
Maintenant, si vous souhaitez restaurer la couleur d'origine, l'utiliser comme ceci: