如何以反向L形状为图像设置动画

时间:2012-06-19 05:15:48

标签: ios uiview uiviewanimation

我正在以一种方式执行任务,即我拍摄了一张图像和二十到三十个矩形单元格按钮。

对于那些矩形单元格,我将它们命名为1,2,3,4,5,--------,30。我将矩形单元排列成6×7矩阵。现在,如果我单击矩形单元格按钮29,图像必须找到该矩阵中的最短路径才能到达该单击按钮。

我该如何执行此操作?

3 个答案:

答案 0 :(得分:1)

您想要将一个图像设置为30个按钮之一的位置吗?此外,您希望它不是在对角线上移动,而是先水平移动,然后垂直移动? CodaFi的代码非常接近我的意思。我会写一个IBAction方法,我将附加到所有按钮。以CodaFi代码为基础的Startig,这是我建议的行动方法:

-(IBAction)animateImageToButton: (id) sender
{
  button = (UIButton *) sender;

  //First animate the image to the x position of the button
  CGPoint fPoint = CGPointMake(button.center.x, image.center.y);
  CGPoint sPoint = button.center;
  //animate x position first.
  [UIView animateWithDuration: 1.0f animations: ^
    {
      [image setCenter:fPoint];
    }
    completion ^(BOOL finished)
    {
      //Once that animation is complete, create 
      //a second animation to move to the button's y position
      [UIView animateWithDuration: 1.0f animations: ^
      {
        [image setCenter:sPoint];
      }];
    }];
}

该代码会将一个名为Image的UIImageView移动到被点击的按钮上。

答案 1 :(得分:0)

我不会给按钮命名,而是给它们tag。我会使用以下方案:

button.tag = xCoordinate *100 + yCoordinate; 

因此,例如,对于顶行左侧的第三个按钮,标记为301。检索这样的坐标:

xCoordinate = button.tag / 100; 
yCoordinate = button.tag % 100; 

现在,您只需通过更改图像的center的x和y坐标,将图像设置为按钮的frame或其附近的其他点的动画。

答案 2 :(得分:0)

我不同意mundi铺设的标签方法,因为图像会以对角线移动到达目的地。我想一个for循环是合适的,所以这是我的方法:

-(void)animateOnLinesWithClickedButton:(UIButton*)button {
    for (UIButton *image in self.view.subviews){
        CGPoint fPoint = CGPointMake(button.center.x, image.center.y);
        CGPoint sPoint = button.center;
        //animate x position first.
        [UIView animateWithDuration:1.0f animations:^{
            [image setCenter:fPoint];
        }
             completion^(BOOL finished){
                   [UIView animateWithDuration:1.0f animations:^{
                        [image setCenter:sPoint];
             }];
        }];
    }
}

这会将按钮逐个设置为正确的x,然后是y位置。使用此方法的延迟变化来创建更逼真的效果。