Ios UIImageView来回反弹

Ios UIImageView来回反弹,ios,xcode,uiimageview,cgpoint,Ios,Xcode,Uiimageview,Cgpoint,我有一个UIImage,当我点击它时,我希望它在X方向移动2px,在Y方向移动2px,然后移回原始位置。这样它就可以被按下多次,只需轻轻摇动 到目前为止,我得到的是这个 imageViewTwo.center = CGPointMake(imageViewTwo.center.x +2, imageViewTwo.center.y +2); 这使图像向每个方向移动2倍 我试过这个 imageViewTwo.center = CGPointMake(imageViewTwo.center.x +

我有一个UIImage,当我点击它时,我希望它在X方向移动2px,在Y方向移动2px,然后移回原始位置。这样它就可以被按下多次,只需轻轻摇动

到目前为止,我得到的是这个

imageViewTwo.center = CGPointMake(imageViewTwo.center.x +2, imageViewTwo.center.y +2);
这使图像向每个方向移动2倍

我试过这个

imageViewTwo.center = CGPointMake(imageViewTwo.center.x +2, imageViewTwo.center.y +2);
imageViewTwo.center = CGPointMake(imageViewTwo.center.x -2, imageViewTwo.center.y -2);
但这只会让图像根本不动。这些线位于viewDidLoad中

我需要的是让它在被点击到原始位置后立即返回。

尝试使用动画

    [UIView animateWithDuration:0.5
                     animations:^
     {
         //move right
         imageViewTwo.center = CGPointMake(imageViewTwo.center.x +2, imageViewTwo.center.y +2);
     }
                     completion:^(BOOL completed)
     {
         if (completed)
         {
             //completed move right..now move left
             [UIView animateWithDuration:0.5
                              animations:^
              {
                  imageViewTwo.center = CGPointMake(imageViewTwo.center.x -2, imageViewTwo.center.y -2);
              }];
         }
     }];
尝试使用动画

    [UIView animateWithDuration:0.5
                     animations:^
     {
         //move right
         imageViewTwo.center = CGPointMake(imageViewTwo.center.x +2, imageViewTwo.center.y +2);
     }
                     completion:^(BOOL completed)
     {
         if (completed)
         {
             //completed move right..now move left
             [UIView animateWithDuration:0.5
                              animations:^
              {
                  imageViewTwo.center = CGPointMake(imageViewTwo.center.x -2, imageViewTwo.center.y -2);
              }];
         }
     }];

我猜您的第二个代码执行得太快了,以至于没有显示在屏幕上。您是否考虑过使用一个面向动画的类来执行此“抖动”?看看这个问题,它展示了如何使用动画,不同的动作,但你可以调整坐标。我猜您的第二个代码执行得太快了,以至于没有显示在屏幕上。您是否考虑过使用一个面向动画的类来执行此“抖动”?看看这个问题,它展示了如何使用动画,不同的动作,但你可以调整坐标。如果有效的话,一定要投票并记为正确答案。回答问题的人会花自己的时间帮助别人解决问题。如果成功了,一定要提高投票率,并将其标记为正确答案。回复的人花自己的时间帮助别人。