Ich möchte alle UIButton
/UILabel
in einer UIView
animieren. Zum Beispiel, dass jede UIButton
nacheinander mit einer einzelnen Codezeile eingeblendet wird. Ist das möglich? Ich suchte auf Github
, aber ich konnte nichts finden. Ich finde es eine Menge Arbeit, jeden einzelnen UILabel
oder UIButton
eins nach dem anderen zu animieren. Vielen Dank.Animiere jedes Element in einer UIView
Antwort
Sie können es selbst machen, indem Sie über Teilansichten einer UIView
iterieren und überprüfen, ob es eine UILabel
oder UIButton
ist! So etwas wie:
var counter : Double = 0
func hideSubviews(view:UIView){
for tempView in view.subviews{
let when = DispatchTime.now() + counter
if tempView is UIButton || tempView is UILabel{
DispatchQueue.main.asyncAfter(deadline: when) {
UIView.animate(withDuration: 1, animations: {
//this does fade out, change 0 to 1 for fade in
tempView.alpha = 0.0
})
}
}
//increment by gap you want
counter += 1
}
}
bearbeiten:
Sigh ich über dieses viel einfachere Weise vergessen haben, können Sie die Verzögerungseigenschaft in der belebten Funktion:
var counter = 0
func hideSubviews(view:UIView){
for tempView in view.subviews{
if tempView is UIButton || tempView is UILabel{
UIView.animate(withDuration: 0.3, delay: TimeInterval(counter), options: .init(rawValue: 0), animations: {
tempView.alpha = 0.0
}, completion: nil)
}
counter += 1
}
}
Und dann in Ihrem viewDidAppear
oder wo auch immer, rufen Sie einfach die Funktion und übergeben Sie die Ansicht:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
hideSubviews(view: view)
}
Sie könnten eine Funktion als eine einzelne Codezeile, nach der Sie suchen, erstellen und aufrufen, wo Sie ein Array der Schaltflächen oder Beschriftungen hinzufügen, die Sie einblenden möchten. Ich gebe Ihnen ein Beispiel, das Sie einfügen können und es sollte Arbeit. Das einzige, was Sie tun müssen, ist, die UIButton-Ausgänge im Storyboard anzuschließen.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var button1: UIButton!
@IBOutlet weak var button2: UIButton!
@IBOutlet weak var button3: UIButton!
var count = 0
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
let allButtons = [button1, button2, button3]
fadeInButtons(buttons: allButtons as! [UIButton])
}
func fadeInButtons(buttons: [UIButton]) {
UIView.animate(withDuration: 0.4, animations: {
buttons[self.count].alpha = 0
}) { (value) in
if self.count < buttons.count - 1 {
self.count += 1
self.fadeInButtons(buttons: buttons)
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Ihre Storyboard mit den Tasten wie diese
aussehen sollte also alles, was Sie tun müssen, ist die Funktion fadeInButtons (Tasten: [UIButton]) aufrufen und ein Array von den Pass Tasten, die Sie einblenden möchten, und es wird eine nach der anderen tun. Sie können dies ändern, um auch Beschriftungen func fadeInButtons (Schaltflächen: [UIButton], Beschriftungen: [UILabel]) einzufügen. Sie können die Zeit jeder Animation ändern, in diesem Beispiel dauert jede Einblendung der Animation 0,4.
let duration = 0.5
view.subviews.flatMap { $0 as? UILabel ?? $0 as? UIButton }.enumerated().forEach { i, o in UIView.animate(withDuration: duration, delay: Double(i) * duration, animations: { o.alpha = 0 }) }
In "einer" Zeile.
typisierten dies auf meinem Handy so, wenn ich einige Fehler gemacht pls sie fühlen sich frei zu korrigieren :)
- 1. Animiere jedes Array Element Javascript
- 2. Animiere UIView auf einer navigationBar in Swift
- 3. Animiere UIView Hintergrundfarbe swift
- 4. Animiere jedes Element von Listview bei der Anzeige
- 5. Wie animiere ich die Breite einer UIView mit einem Timer?
- 6. Wie animiere ich UIView mit einer for-Schleife?
- 7. jquery Wegpunkt animiere jedes li Fadeup
- 8. Verwenden jedes Element in einer Listbox
- 9. jedes Element in einer Liste mit jQuery
- 10. Animiere die Zeichnung einer Linie (Quartz 2D?)
- 11. SASS, animiere jede Liste mit einer Verzögerung
- 12. Animiere ein Element auf einem Sinus-Pfad
- 13. wie auf jedes Element einer Abfragevariablen zugreifen
- 14. Anwendung putstr auf jedes Element einer Liste
- 15. Wie durchläuft jedes Element einer MongoCollection?
- 16. Jedes n-te Element einer Sequenz erhalten
- 17. JQuery - Anfügen jedes Element
- 18. RecyclerView jedes Element dupliziert
- 19. Animiere den Text in einer Textansicht (swift3)
- 20. Animiere zwischen zwei Zuständen einer Ansicht, benutze benutzerdefinierte Animation
- 21. Animiere SVG Element Transformation (Drehen & Skalieren) in IE
- 22. Wie animiere ich ein Element zum Schwingen in CSS3?
- 23. Animiere ein <g> Element in SVG mit CSS
- 24. Vergleichen jedes Elements mit jedem anderen Element in einer Liste
- 25. Verschiedene Artikelvorlage für jedes Element in einer WPF-Liste?
- 26. Überspringe jedes andere Element in einer verknüpften Liste?
- 27. MsBuild run Exec für jedes Element in einer Liste
- 28. Löschen jedes nth Element aus einer Liste in Python 2.7
- 29. Ändern jedes Element in einer Liste mit differents Gewinde
- 30. mit 3 Elementen in einer Zeile jedes zweite Element wählen
O wow, ich liebe die Tatsache, es jedes UILabel und UIButton dauert nur ohne sie in einem Array an erster Stelle mit. Danke – NoKey