我已经开始使用新的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){}];
}
请帮助我解决这个问题..也许还有另一种方法可以为该圆圈设置动画或点击屏幕。
即使你可以给出代码,当我按下一个按钮,这样圆圈就会停止,并且不会在我按下按钮的时候向右移动 - (即使圆圈处于动画中)所以它将是大.. 感谢。
答案 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
,以便计算动画所在位置的当前位置。