UIView的动画:如何重置位置

时间:2011-03-31 17:07:17

标签: iphone cocoa-touch animation uiview

我有一个非常基本的初学者关于我动画的UIViews位置的问题。

如果我称之为

[pageShadowView setFrame:CGRectOffset([pageShadowView frame], 100, 0)];

然后设置动画

[pageShadowView setFrame:CGRectOffset([pageShadowView frame], -100, 0)];

我基本上会将我的UIView从屏幕右侧移到左侧。但是,如果我在第二行代码中指定-150,并且如果我要重复这些动画几次,我的对象将逐渐向左移动。

这是一个非常基本的问题,我担心,但有没有办法指定固定的X坐标而不是定义相对位置?即假设我一直想将对象从x = 200移动到x = 100。

我的整个方法如下:

[pageShadowView setFrame:CGRectOffset([pageShadowView frame], 100, 0)];

[UIView beginAnimations:@"shadowMove" context:nil]; // Begin animation
    [UIView setAnimationDuration:2.5];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [pageShadowView setFrame:CGRectOffset([pageShadowView frame], -100, 0)];        
    [UIView commitAnimations];

2 个答案:

答案 0 :(得分:5)

您可以使用setFrame设置任何rect ...只需使用具有绝对位置的CGRectMake()创建一个。

e.g。

pageShadowView.frame = CGRectMake( 
                            x, 
                            y,
                            CGRectGetWidth(pageShadowView.frame),
                            CGRectGetHeight(pageShadowView.frame)
                        );

答案 1 :(得分:3)

 [pageShadowView setFrame:CGRectMake(xStart, yStart, xWidth, yHeight)]; // x,y in superview coordinates