2016-07-19 21 views
0

Ich versuche, ein paar Kreise zu animieren und ihre Opazitäten gleichzeitig zu ändern.Ändern der Deckkraft während der Keyframe-Animation Swift

 UIView.animateKeyframesWithDuration(2, delay: 0, options: .Repeat, animations: { 
     UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 0.5, animations: { 
      self.innerRingView.alpha = 1 
     }) 
     UIView.addKeyframeWithRelativeStartTime(0.5, relativeDuration: 0.5, animations: { 
      self.innerRingView.alpha = 0 
      self.middleRingView.alpha = 1 
     }) 
     UIView.addKeyframeWithRelativeStartTime(1, relativeDuration: 0.5, animations: { 
      self.middleRingView.alpha = 0 
      self.outterRingView.alpha = 1 
     }) 
     UIView.addKeyframeWithRelativeStartTime(1.5, relativeDuration: 0.5, animations: { 
      self.outterRingView.alpha = 0 
     }) 
     }, completion: nil) 

Aus irgendeinem Grund, es wird nie auf die zweite Animation:

UIView.addKeyframeWithRelativeStartTime(1, relativeDuration: 0.5, animations: { 
     self.middleRingView.alpha = 0 
     self.outterRingView.alpha = 1 
    }) 

Aus diesem Grund, meine Animation arbeiten nicht. innerRingView kehrt nie zu 0 opacity zurück und outterRingView erscheint nie (alle Ansichten sind standardmäßig auf 0 gesetzt).

Was scheint hier das Problem zu sein?

Antwort

2

Ausgabe erschien mit dem Schlüsselbild relativen Startzeit

UIView.addKeyframeWithRelativeStartTime 

zu sein, die von 0 bis 1 im Bereich sein muss, wobei 0 den Beginn der Gesamt Animation darstellt und 1 das Ende des Gesamt darstellt Animation. Bei einer Animation mit einer Dauer von zwei Sekunden bewirkt beispielsweise die Angabe einer Startzeit von 0,5, dass die Animationen eine Sekunde nach dem Start der Gesamtanimation ausgeführt werden.

+0

Idindu schlug mich dazu. (Voted.) Relative Startzeiten müssen im Bereich 0 (Beginn der gesamten Animation) und 1 (am Ende der Animation) liegen. –

+0

Also wenn ich möchte, dass die ganze Animation 2 Sekunden lang ist. Sollte mein Keyframe relative Startzeiten ein Verhältnis von 2 sein? Also 0, 0,25, 0,5, 0,75? – Bob

+0

Die von jedem Animationsblock benötigte Zeit ist relativ zur gesamten Dauer und Sie müssen sicherstellen, dass die Startzeiten korrekt sind, indem Sie die kumulative Zeit verfolgen. Ihr Verhältnis, AFAIK, muss nicht ein Verhältnis von 2 sein, sondern innerhalb der gesamten Dauer von 2 interpoliert die tatsächliche Animation zwischen ihnen, was durch den Parameter options geführt wird. – ldindu