我有一个简单的动画,可以上下移动一个UIView。
当它正确地向上移动时,当它向下移动时,它移动得太远了。
为什么不和向上移动相同的距离呢?
- (void) animateInputViewUp: (BOOL) up
{
const int movementDistance = 120;
const float movementDuration = 0.4f;
int movement = (up ? -movementDistance : movementDistance);
[UIView beginAnimations: @"anim" context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: movementDuration];
self.myInputView.frame = CGRectOffset(self.myInputView.frame, 0, movement);
[UIView commitAnimations];
}我发现它的下移是向上的两倍-我不明白……
所以当我写这篇文章的时候--它是正确的--不管出于什么原因.
if (up)
movementDistance = 120;
else {
movementDistance =60;
}发布于 2012-07-31 17:10:33
您正在将视图移动到-120,这将离开屏幕。您需要引用inputView的frame.origin.y .initi.y如下:
- (void) animateInputViewUp: (BOOL) up
{
const int movementDistance = 120;
const float movementDuration = 0.4f;
int movement = (up ? -movementDistance : movementDistance);
[UIView beginAnimations: @"anim" context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: movementDuration];
self.myInputView.frame = CGRectOffset(self.myInputView.frame, 0, self.myInputView.frame.origin.y + movement);
[UIView commitAnimations];
}这应该会给你正确的结果
编辑:你的视图向下移动两倍的原因是,例如,假设你原来的y轴是0。如果你把它向上移动到120,因为这就是你的movementDistance,那么一旦你想让它下降,它就直接移动到-120。它通过0(你原来的y轴)。
发布于 2012-07-31 16:53:40
嗯,我不知道为什么会这样。通常,我使用它们的中心动画视图,我觉得框架可以被剪裁等等并引起问题。尝尝这个
self.myInputView.center = CGPointMake (self.myInputView.center.x,self.myInputView.center.y - movement);我只是在猜,但如果成功的话,请告诉我。
https://stackoverflow.com/questions/11745016
复制相似问题