Ich entwickle iOS-Anwendung in Swift und ich möchte ein Bild in 360 Grad mit Bewegung drehen. Die Animation sollte für 2 Sekunden gestoppt werden, sobald sie jede Runde beendet hat.Quick Image Rotation 360 Grad
Ich brauche 2 Sekunden Verzögerung nach Abschluss jeder Umdrehung. Wie kann ich eine Verzögerung einstellen? Ich habe einen Bildrotationsalgorithmus gemacht.
func rotate360Degrees(_ duration: CFTimeInterval = 1.0, completionDelegate: CAAnimationDelegate? = nil) {
let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
rotateAnimation.fromValue = 0.0
rotateAnimation.toValue = CGFloat(M_PI * 2.0)
rotateAnimation.duration = duration
if let delegate: CAAnimationDelegate = completionDelegate {
rotateAnimation.delegate = delegate
}
rotateAnimation.repeatCount = Float.greatestFiniteMagnitude;
self.layer.add(rotateAnimation, forKey: nil)
}
Für Verzögerung Ich habe dies versucht:
let deadlineTime = DispatchTime.now() + .seconds(2)
DispatchQueue.main.asyncAfter(deadline: deadlineTime, execute: {
self.imgView.rotate360Degrees()
})
es funktioniert nicht.
Was funktioniert nicht? Sie rufen nicht 'rotate360Degrees' auf, oder diese Methode verursacht keine Rotation? Oder Rotation funktioniert, aber es gibt keine Pause zwischen den Rotationen? (meine beste Vermutung: die letzte, und die richtige Antwort beinhaltet 'CAKeyframeAnimation', da das, was Sie tun, eine Verzögerung beim Starten einer Animation irgendwie erwartet, sich permanent in die Animation zu setzen) – Tommy
Rotation funktioniert, aber ich brauche 2 Sekunden Verzögerung Bei jeder Umdrehung funktioniert dieser Teil nicht. – user12346