2011-04-18 9 views
3

Actuellement, je déplace une image png en utilisant CAKeyframeAnimation le long d'un chemin pendant 30 secondes. Est-il possible d'arrêter cette image en mouvement entre 0 et 30 secondes en appuyant sur un bouton?Arrêt de CAKeyframeAnimation au milieu

Répondre

5

Cela supprimera l'animation ...

[yourView.layer removeAllAnimations]; 
+0

Une idée, que faire si le récepteur est un NSWindow? NSWindows ne fournit pas removeAllAnimations; malheureusement. – Raffael

+0

NSWindow provient du SDK OSX et non du SDK iOS. – guillaume

1

Avez-vous essayé

[view.layer removeAnimationForKey:kFrameAnimationKey]; 
2

Eh bien ... voulez-vous arrêter l'animation ou vous souhaitez simplement faire une pause/reprendre? Si vous souhaitez faire une pause, alors il y a quelque chose comme ceci:

func pause(){ 
    pausedTime = foo.layer.convertTime(CACurrentMediaTime(), fromLayer: nil) 
    foo.layer.speed = 0 
    foo.layer.timeOffset = pausedTime! 
} 
func play(){ 
    pausedTime = foo.layer.timeOffset 
    foo.layer.speed = 1.0 
    foo.layer.timeOffset = 0 
    let timeSincePause = foo.layer.convertTime(CACurrentMediaTime(), fromLayer: nil) - pausedTime! 
    foo.layer.beginTime = timeSincePause 
}