2009-08-26 53 views
0

我想知道如何去动画UIView到特定的CGPoint。以下是我迄今(不以它的当前工作状态):动画UIView到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]; 

回答

1

尝试:

#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

出于某种原因,第一次运行时,动画视图似乎在y轴上有点下降。但是,在这之后它工作正常。有任何想法吗? – PF1 2009-08-26 19:52:16

+0

我会检查一下每次运行时'point'的值是什么 - 我的猜测是第一次“点”不是你所期望的。 – fbrereto 2009-08-26 20:22:42

+0

感谢您的回复fbrereton。我解决了这个问题,现在它工作的很好! – PF1 2009-08-26 21:35:02

1

后开始,但在提交前,更改您的用户界面中查看值。

0

如果你的目标10.5或以上,你可以使用核心动画通过动画代理加入的NSView。尝试

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

这也适用于iPhone OS吗? – fbrereto 2009-08-26 18:39:26

+0

我不知道我的头顶(尚未有机会为iPhone开发)。我会这样想。 – 2009-08-26 19:04:23

+0

iPhone拥有与Mac不同的视图体系结构,因此iPhone平台上不存在动画制作者代理。 – 2009-08-26 20:58:16