2010-09-11 4 views
2

J'ai actuellement une vue animée d'une partie de l'écran à l'autre. Je veux que l'animation fasse une pause chaque fois que le bouton "pause" est pressé. Cela signifie que l'animation doit rester à l'endroit où elle se trouve (emplacement du cadre) lorsque je "mets en pause" l'animation. J'ai essayé quelques petites choses mais rien ne m'a donné le résultat que je veux. Voici une version approximative de mon code actuel.UIView Annuler l'animation

-(IBAction)startScroll 
{ 
NSLog(@"Start scroll"); 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
[UIView setAnimationDuration:30]; 

//set new frame for view 

[UIView commitAnimations]; 
} 

et une méthode pour arrêter l'animation

-(IBAction)pauseScroll 
{ 
NSLog(@"Pause Scroll"); 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
[UIView setAnimationDuration:0.1]; 

//Pause animation in it's current location 

[UIView commitAnimations];  

} 

Répondre

1

a fini par aller avec une minuterie et mise à jour du contentOffset toutes les quelques secondes. J'aurais aimé qu'il y ait un meilleur moyen d'avoir une vue sur les coordonnées actuelles même pendant une animation. Le composant presentationLayer n'a pas donné de résultats positifs.

0

animations UIView ne le font pas tout à fait travail comme ça. Une fois que vous avez défini le cadre, la vue se déplace instantanément de la perspective de votre application; c'est juste l'affichage à l'utilisateur qui est animé.

Vous pouvez utiliser la « couche de présentation » pour savoir à peu près ce qui s'affiche à l'écran (il est seulement approximatif depuis le compositing se produit dans un autre thread):

#import <QuartzCore/CALayer.h> 

... 

[fooView setFrame:fooView.layer.presentationLayer.frame] 
+0

J'ai essayé de paramétrer le frame sur PresentationLayer.frame comme vous l'avez mentionné précédemment mais pour une raison quelconque, il est en train de déplacer la vue vers le point de coordonnée 0,0. Autre chose que je peux essayer? – Jeff

+0

Peu importe que le comportement soit attendu ... C'est parce que j'essaye d'animer un UIScrollView pas le cadre lui-même. – Jeff