使用屏幕点击停止UIView动画

时间:2014-11-24 20:37:37

标签: objective-c animation uiview

我已经开始使用新的IOS应用,但我的代码中存在问题。 关于应用程序的说明:在屏幕中间放置一个圆圈,当我点击屏幕时,圆圈开始移动到我在那里点击的点。 我有编程和它的工作非常好,但还有一件事:当我点击屏幕上的另一个点,所以圆圈将在我点击之后立即移动到第二点! - 即使圆圈仍然移动到第一个点,他立即开始移动到第二个点。 (这是困难的部分)。

点按屏幕时,这是我的代码:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    [self.view.layer removeAllAnimations];

    UITouch *myTouch = [[touches allObjects] objectAtIndex: 0];
    CGPoint currentPos = [myTouch locationInView: self.view];

    [UIView animateWithDuration:2
                              delay:0.0f
                            options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionRepeat |    UIViewAnimationOptionAutoreverse
                         animations:^(){
                             circle.center = CGPointMake(currentPos.x, currentPos.y);
                         }
                         completion:^(BOOL finished){}];

  }

请帮助我解决这个问题..也许还有另一种方法可以为该圆圈设置动画或点击屏幕。

即使你可以给出代码,当我按下一个按钮,这样圆圈就会停止,并且不会在我按下按钮的时候向右移动 - (即使圆圈处于动画中)所以它将是大.. 感谢。

1 个答案:

答案 0 :(得分:0)

据我所知,UIViewAnimation中没有引用当前动画中心的值,因此您需要编写自己的动画算法。

关于"停止圈子的问题"是我们可以在UIViewAnimation中访问的任何地方都没有记录圆圈位置。为了了解我的意思,请尝试NSLog() circle.center点,当您点击屏幕时,circle.center的值永远不会改变,直到您移动位置为止点击屏幕。 (即使它不断移动circle.center CGPoint没有改变)

这意味着动画会立即设置圆圈的中心,并且当动画停止时#34;它不会停在原处,当动画开始时设置圆圈的中心时会停止。

我知道这不是你想要听到的,但是按照你的预期方式制作这个节目会比你预期的更多。我不熟悉Core Animation中的自定义动画,但这里有一些链接可以帮助您入门。

A question similar to yours on another website.

How to find offsets between two points (In your case the starting animation and ending)

您还需要阅读毕达哥拉斯理论和NSTimeInterval,以便计算动画所在位置的当前位置。