2016-12-08 4 views
-1

Ich habe eine sich wiederholende Animation, die ein UILabel und UIImage asynchron ausblendet, aber ich kann nicht herausfinden, wie das UIImage länger angezeigt wird als das UILabel. Ich möchte, dass die Animation zwischen Label und Bild wechselt, damit das Bild angezeigt wird für eine Dauer von 5 Sekunden, und das Etikett wird für eine Dauer von 2 Sekunden:Alternierende Animationsschleife

override func viewDidLoad() { 
    super.viewDidLoad() 

    UIView.animate(withDuration: 5, delay: 2.0, options:[UIViewAnimationOptions.repeat, UIViewAnimationOptions.autoreverse], animations: { 
     self.fadeIn() 
     self.fadeOut() 
    }, completion: nil) 
} 

func fadeIn() { 
    self.label.alpha = 0.0 
    self.image.alpha = 1.0 
} 

func fadeOut() { 
    self.label.alpha = 1.0 
    self.image.alpha = 0.0 
} 
+0

Es sieht für mich aus, dass Sie beide zur gleichen Zeit ausführen. Außerdem wiederholst du nicht die Animation. –

Antwort

1

Sie können den Effekt erreichen, den Sie suchen, ist mehrere Möglichkeiten.

In der ViewDidLoad, anstatt einen Animationsblock zu erstellen und Ihre Fade-Methoden von innen aufzurufen, haben Sie einfach nur separate Animationsblöcke innerhalb jeder Methode mit unterschiedlichen Verzögerungswerten.

Also entfernen Sie die UIView.animate aus der ViewDidLoad und einfach jus fadeIn() und fadeOut() aufrufen, und innerhalb Ihrer Fade-Methoden würden Sie die UIView.animate .... und setzen Sie Ihre gewünschte Dauer und Timing. Auf diese Weise haben Sie viel mehr Kontrolle über Ihre Animation und Sie können die Werte optimieren, bis Sie den gewünschten Effekt erzielen.

Die zweite Option wäre, wie bereits erwähnt, die Schlüsselbildanimation.

1

verwenden, um ein keyframe animation mit einer Dauer von 7 Sekunden wiederholt wird, bestehend aus zwei Keyframes:

  • die first keyframe Starts Bei der Start und hat eine Dauer, die 5/7 der Gesamtdauer ist, und verblasst in eine Richtung.

  • Die second keyframe beginnt 5/7 des Weges und hat eine Dauer, die 2/7 der Gesamtdauer ist, und blendet den anderen Weg.

Verwandte Themen