iPhone UIImageView需要沿路径移动动画图像

时间:2012-10-09 00:23:35

标签: iphone animation uiimageview

我有一个UIImageView,它有一个迭代的图像数组,以形成一个动画。

[imageView setAnimationImages:arrayOfImages];

我现在需要在动画时沿着路径移动此图像视图。我查看了this example的源代码。它使用UIBezierPath创建路径,使用CALayer来表示沿路径移动的对象。但是我如何为动画UIImageView做这个呢?

非常感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

[编辑]请注意我还必须将UIImageView作为子视图添加到当前视图中。

最后使用我之前给出的例子来计算出来。以下是我的步骤:

  1. 创建路径。 (注意下面代码中的P = CGPointMake)

    UIBezierPath *trackPath = [UIBezierPath bezierPath];
    [trackPath moveToPoint:P(160, 25)];
    [trackPath addCurveToPoint:P(300, 120)
             controlPoint1:P(320, 0)
             controlPoint2:P(300, 80)];
    [trackPath addCurveToPoint:P(80, 380)
             controlPoint1:P(300, 200)
             controlPoint2:P(200, 480)];
    

    ...

  2. 创建UIImageView并为其提供一组动画图像。

    UIImageView *test = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
    [test setAnimationImages:[NSArray arrayWithObjects:[UIImage imageNamed:@"bee-1"],    
    [UIImage imageNamed:@"bee-2"], nil]];
    [test startAnimating];
    
  3. 设置UIImageView的图层位置并将图层添加到视图的图层:

    [test.layer setPosition:P(160,25)];
    [self.view.layer addSublayer:test.layer];
    
  4. 创建CAKeyframeAnimation:

    CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    anim.path = trackPath.CGPath;
    anim.rotationMode = kCAAnimationRotateAuto;
    anim.repeatCount = HUGE_VALF;
    anim.duration = 8.0;
    [test.layer addAnimation:anim forKey:@"race"];