- (void)viewDidLoad
{
[super viewDidLoad];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:4];
[UIView setAnimationRepeatCount:50];
[UIView setAnimationRepeatAutoreverses:NO];
CGPoint abc =chem1.center;
abc.y= 480;
chem1.center=abc;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:4];
[UIView setAnimationRepeatCount:50];
[UIView setAnimationRepeatAutoreverses:NO];
CGPoint def =chem2.center;
def.y= 480 ;
chem2.center=def;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:4];
[UIView setAnimationRepeatCount:50];
[UIView setAnimationRepeatAutoreverses:NO];
CGPoint hij =nat1.center;
hij.y= 480;
nat1.center=hij;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:4];
[UIView setAnimationRepeatCount:50];
[UIView setAnimationRepeatAutoreverses:NO];
CGPoint klm =nat2.center;
klm.y= 480;
nat2.center=klm;
}
我非常感谢帮助
答案 0 :(得分:0)
您的问题分为两部分:如何点按动画图片和如何拖动图片。
当您为视图设置动画(或更准确地说是其图层)时,您更改的属性(在您的情况下position
(通过设置center
))会立即更改为其最终值。如果你只是动画(比如使用CABasicAnimation,那么正确的可能根本不会改变。
这意味着如果您尝试点按视图(或图层),它将位于您将其移动到的位置(其最终位置(尽管任何持续时间或动画的重复计数)。
为了能够测试正在移动的内容,您需要针对您尝试点按的视图图层的presentationLayer
进行测试。
CGPoint touchPoint = [gestureRecognizer locationInView:[self view]];
if ([[[[self movingView] layer] presentationLayer] hitTest:touchPoint]) {
// Yeah, you hit the moving (animating) layer!
}
现在用户已经点击了移动视图(在您的情况下为图像),您可以开始处理拖动。
拖动图像时,将图层移动到用户手指拖动图像的位置。
首先,您应该取消该视图的正在进行的动画(拥有动画名称使您只能取消一个动画。
[[[self movingView] layer] removeAllAnimations];
或者,如果您为动画动画设置了名称。
[[[self movingView] layer] removeAnimationForKey:@"nameOfMovingAnimation"];
接下来,当用户移动手指时,您应该(不断)更新视图的位置。你不应该动画这个,因为它会增加手指移动和视图之间的时间,并使你的应用程序看起来像是滞后的。 拖动动画不使其看起来很流畅。
注意:,因为您的问题在用户拖动图片后没有说出您要执行的操作,或者在删除图片时会发生什么。我无法进一步解释。
在网页(或StackOverflow)中搜索以下内容:" iOS拖动视图"您可能会找到有关如何拖动图像视图的更多信息。
一旦你走到这一步,就可以在StackOverflow上再问一个问题(即你可以点击动态图像并停止移动)。