Ich setze einen neuen Textwert auf a UILabel
. Derzeit erscheint der neue Text einwandfrei. Ich möchte jedoch eine Animation hinzufügen, wenn der neue Text angezeigt wird. Ich frage mich, was ich tun kann, um das Erscheinungsbild des neuen Textes zu animieren.
ios
objective-c
ipad
uilabel
caanimation
Joo Park
quelle
quelle
Antworten:
Ich frage mich, ob es funktioniert und es funktioniert perfekt!
Ziel c
Swift 3, 4, 5
quelle
Ziel c
Um einen echten Cross-Dissolve-Übergang zu erzielen (Ausblenden des alten Etiketts während Einblenden des neuen Etiketts), möchten Sie nicht, dass das Einblenden unsichtbar wird. Dies würde zu unerwünschtem Flimmern führen, selbst wenn der Text unverändert bleibt .
Verwenden Sie stattdessen diesen Ansatz:
Siehe auch: UILabel-Text zwischen zwei Zahlen animieren?
Demonstration in iOS 10, 9, 8:
Getestet mit Xcode 8.2.1 & 7.1 , ObjectiveC unter iOS 10 bis 8.0 .
► Um das vollständige Projekt herunterzuladen, suchen Sie in Swift Recipes nach SO-3073520 .
quelle
-addAnimation:forKey
für dieses Etikett und ändern dann den Text des Etiketts.Swift 4
Der richtige Weg, um ein UILabel (oder ein anderes UIView) auszublenden, ist die Verwendung von a
Core Animation Transition
. Dies flackert nicht und wird auch nicht schwarz, wenn der Inhalt unverändert bleibt.Eine tragbare und saubere Lösung ist die Verwendung von a
Extension
in Swift (Aufruf vor dem Ändern sichtbarer Elemente)Der Aufruf sieht folgendermaßen aus:
► Finden Sie diese Lösung auf GitHub und weitere Details zu Swift Recipes .
quelle
MIT
Lizenz garantiert, dass Ihr Cocoapod von jedem und jedem frei verwendet werden kann.seit iOS4 kann es natürlich mit Blöcken gemacht werden:
quelle
Hier ist der Code, damit dies funktioniert.
quelle
UILabel-Erweiterungslösung
Einfach aufgerufene Funktion von
Danke für all die Tipps Jungs. Hoffe das wird langfristig helfen
quelle
Swift 4.2-Version der obigen SwiftArchitect-Lösung (funktioniert hervorragend):
Aufruf:
quelle
Swift 2.0:
ODER
quelle
Mit Swift 5 können Sie eines der beiden folgenden Playground-Codebeispiele auswählen, um die
UILabel
Textänderungen Ihres Textes mit einer Cross-Dissolve-Animation zu animieren .# 1. Verwenden
UIView
dertransition(with:duration:options:animations:completion:)
Klassenmethode von# 2. Verwenden
CATransition
undCALayer
s‘add(_:forKey:)
Methodequelle
Swift 4.2-Lösung (4.0-Antwort nehmen und aktualisieren, damit neue Aufzählungen kompiliert werden können)
quelle
Die Systemstandardwerte von 0,25 für
duration
und .curveEaseInEaseOut fürtimingFunction
sind aus Gründen der Konsistenz zwischen Animationen häufig vorzuziehen und können weggelassen werden:Das ist das gleiche wie das Schreiben:
quelle
Dies ist eine C # UIView-Erweiterungsmethode, die auf dem Code von @ SwiftArchitect basiert. Wenn das automatische Layout beteiligt ist und die Steuerelemente abhängig vom Text des Etiketts verschoben werden müssen, verwendet dieser aufrufende Code die Übersicht des Etiketts als Übergangsansicht anstelle des Etiketts selbst. Ich habe einen Lambda-Ausdruck für die Aktion hinzugefügt, um sie gekapselt zu machen.
Aufrufcode:
quelle
Wenn Sie dies
Swift
mit Verzögerung tun möchten, versuchen Sie Folgendes:Verwenden der folgenden von @matt erstellten Funktion - https://stackoverflow.com/a/24318861/1982051 :
das wird dies in Swift 3
quelle
Es gibt noch eine Lösung, um dies zu erreichen. Es wurde hier beschrieben . Die Idee besteht darin, die Funktion folgendermaßen zu unterteilen
UILabel
und zu überschreibenaction(for:forKey:)
:Anwendungsbeispiele:
quelle