Je mets une nouvelle valeur de texte à a UILabel
. Actuellement, le nouveau texte apparaît très bien. Cependant, j'aimerais ajouter une animation lorsque le nouveau texte apparaît. Je me demande ce que je peux faire pour animer l'apparence du nouveau texte.
ios
objective-c
ipad
uilabel
caanimation
Joo Park
la source
la source
Réponses:
Je me demande si ça marche, et ça marche parfaitement!
Objectif c
Swift 3, 4, 5
la source
Objectif c
Pour obtenir une véritable transition de fondu croisé (l'ancienne étiquette disparaît tandis que la nouvelle étiquette apparaît ), vous ne voulez pas que le fondu devienne invisible. Cela entraînerait un scintillement indésirable même si le texte reste inchangé .
Utilisez plutôt cette approche:
Voir aussi: Animer du texte UILabel entre deux nombres?
Démonstration sous iOS 10, 9, 8:
Testé avec Xcode 8.2.1 et 7.1 , ObjectiveC sur iOS 10 à 8.0 .
► Pour télécharger le projet complet, recherchez SO-3073520 dans Swift Recipes .
la source
-addAnimation:forKey
à cette étiquette, puis modifiez le texte de l'étiquette.Swift 4
La bonne façon de fondre un UILabel (ou tout autre UIView d'ailleurs) est d'utiliser un fichier
Core Animation Transition
. Cela ne scintillera pas et ne passera pas au noir si le contenu reste inchangé.Une solution portable et propre consiste à utiliser un
Extension
dans Swift (invoquer les éléments visibles modifiés auparavant)L'appel ressemble à ceci:
► Trouvez cette solution sur GitHub et des détails supplémentaires sur les recettes Swift .
la source
MIT
licence garantit que votre Cocoapod peut être utilisé librement par tout le monde.depuis iOS4 cela peut évidemment être fait avec des blocs:
la source
Voici le code pour que cela fonctionne.
la source
Solution d'extension UILabel
Fonction simplement appelée par
Merci pour tous les conseils les gars. J'espère que cela aidera à long terme
la source
Version Swift 4.2 de la solution SwiftArchitect ci-dessus (fonctionne très bien):
Invocation:
la source
Swift 2.0:
OU
la source
Avec Swift 5, vous pouvez choisir l 'un des deux exemples de code Playground suivants afin d' animer les
UILabel
modifications de votre texte avec une animation de dissolution croisée.#1. Utilisation de
UIView
latransition(with:duration:options:animations:completion:)
méthode de classe de# 2. L' utilisation
CATransition
etCALayer
deadd(_:forKey:)
méthodela source
Solution Swift 4.2 (prise de la réponse 4.0 et mise à jour des nouvelles énumérations à compiler)
la source
Les valeurs par défaut du système de 0,25 pour
duration
et .curveEaseInEaseOut pourtimingFunction
sont souvent préférables pour la cohérence entre les animations et peuvent être omises:ce qui revient à écrire ceci:
la source
Il s'agit d'une méthode d'extension C # UIView basée sur le code de @ SwiftArchitect. Lorsque la disposition automatique est impliquée et que les contrôles doivent se déplacer en fonction du texte de l'étiquette, ce code d'appel utilise la vue d'ensemble de l'étiquette comme vue de transition au lieu de l'étiquette elle-même. J'ai ajouté une expression lambda pour l'action afin de la rendre plus encapsulée.
Indicatif d'appel:
la source
Si vous souhaitez le faire
Swift
avec un délai, essayez ceci:en utilisant la fonction suivante créée par @matt - https://stackoverflow.com/a/24318861/1982051 :
qui deviendra cela dans Swift 3
la source
Il existe une autre solution pour y parvenir. Cela a été décrit ici . L'idée est de sous
UILabel
-classer et de remplacer laaction(for:forKey:)
fonction de la manière suivante:Exemples d'utilisation:
la source