我有一个非常基本的初学者关于我动画的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];
答案 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