2009-08-26 6 views
0

Je me demande comment je vais procéder pour animer un UIView sur un CGPoint spécifique. Ce qui suit est ce que j'ai jusqu'à présent (ce qui ne fonctionne pas dans son état actuel):Animer un UIView sur un CGPoint

#define MOVE_ANIMATION_DURATION_SECONDS 2 

NSValue *pointValue = [[NSValue valueWithCGPoint:point] retain]; 
[UIView beginAnimations:nil context:pointValue]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDuration:MOVE_ANIMATION_DURATION_SECONDS]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)]; 
[UIView commitAnimations]; 

Répondre

1

Essayez:

#define MOVE_ANIMATION_DURATION_SECONDS 2 

[UIView beginAnimations:nil context:pointValue]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDuration:MOVE_ANIMATION_DURATION_SECONDS]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)]; 

CGRect frame = myUIViewObject.frame; 
frame.origin = point; 
myUIViewObject.frame = frame; 

[UIView commitAnimations]; 
+0

Pour une raison quelconque, la première fois que cette vue est lancée, la vue animée semble légèrement s'abaisser sur l'axe y. Cependant, après cela, cela fonctionne bien. Des idées? – PF1

+0

Je vérifierais pour voir quelle est la valeur de 'point' chaque fois qu'il est exécuté - je suppose que ce' point' la première fois n'est pas ce que vous attendez. – fbrereto

+0

Merci pour votre réponse fbrereton. J'ai corrigé le problème et ça marche très bien maintenant! – PF1

1

Après le début, mais avant que la livraison, changer la valeur de votre vue de l'interface utilisateur.

0

Si vous ciblez 10.5 ou au-dessus, vous pouvez utiliser Core Animation via le proxy animateur ajouté à NSView. Essayez

[[someView animator] setFrame: someNewFrame]; 
+0

Cela fonctionne-t-il également sur l'iPhone OS? – fbrereto

+0

Je ne sais pas sur le dessus de ma tête (pas encore eu une chance de développer pour l'iPhone). Je l'imaginerais. –

+0

L'iPhone a une architecture de vue différente de celle du Mac, de sorte que le proxy d'animation n'existe pas sur la plate-forme iPhone. –

Questions connexes