Ich bin eine rotierende Ziffer Ansicht wie diese Umsetzung: https://github.com/jonathantribouharet/JTNumberScrollAnimatedViewWie kann die Geschwindigkeit der UIView-Animation gesteuert werden?
Aber statt Scrollen von etwa 1 bis 9, möchte ich die Animation (1 bis 9 und dann wieder auf 1 bis 9), um fortzufahren Scrollen, bis ich Stoppen Sie es manuell.
Ich implementiere dies, indem ich UILabel Subviews 1-9, vertikal gestapelt, und ein zusätzliches Label für Nummer 1 an der Unterseite hinzufügen. Beim Drehen nach unten (zeigt die untere Beschriftung 1 an), setze ich die Transformation bei der Beendigung der Animation auf den Ursprung zurück, zeige Top Label 1 und starte die rotierende Animation neu.
Dies funktioniert gut, aber da jede Drehung (1-9-1) getrennt ist, beschleunigt die Animation von 1-9 und stoppt dann bei 1 und nimmt die Geschwindigkeit bei der nächsten Iteration auf. Das möchte ich nicht, ich möchte, dass die Rotation zwischen den Iterationen konstant bleibt.
Wie kann ich dies mit UIView-Animation tun? Hier
ist der Code:
public func startAnimation(){
UIView.setAnimationCurve(UIViewAnimationCurve.easeIn)
UIView.animate(withDuration: TimeInterval(self.loopDuration), animations: { [unowned self] in
self.container!.transform = CGAffineTransform(translationX: 0, y: CGFloat(-(self.endNumber-self.startNumber+1)*(self.size)))
}) { [unowned self] (completed) in
if self.isAnimationStopped {
self.container!.transform = CGAffineTransform(translationX: 0, y: 0)
UIView.setAnimationCurve(UIViewAnimationCurve.easeOut)
UIView.animate(withDuration: TimeInterval(self.loopDuration), animations: {
self.container!.transform = CGAffineTransform(translationX: 0, y: CGFloat(-self.targetY))
})
} else {
self.container!.transform = CGAffineTransform(translationX: 0, y: 0)
self.startAnimation()
}
}
}
wie ein Zauber. Vielen Dank! – NeoWang