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?
Idindu schlug mich dazu. (Voted.) Relative Startzeiten müssen im Bereich 0 (Beginn der gesamten Animation) und 1 (am Ende der Animation) liegen. –
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
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