UIView的动画:如何重置位置

n.e*_*ind 2 iphone animation cocoa-touch uiview

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

如果我这样称呼

[pageShadowView setFrame:CGRectOffset([pageShadowView frame], 100, 0)];
Run Code Online (Sandbox Code Playgroud)

然后动画这个

[pageShadowView setFrame:CGRectOffset([pageShadowView frame], -100, 0)];
Run Code Online (Sandbox Code Playgroud)

我基本上会将我的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];
Run Code Online (Sandbox Code Playgroud)

Bas*_*ian 5

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

例如

pageShadowView.frame = CGRectMake( 
                            x, 
                            y,
                            CGRectGetWidth(pageShadowView.frame),
                            CGRectGetHeight(pageShadowView.frame)
                        );
Run Code Online (Sandbox Code Playgroud)