2012-10-09 189 views
0

我有一個UIImageView與它迭代通過形成一個動畫的圖像數組。iPhone UIImageView與動畫圖像需要沿着路徑移動

[imageView setAnimationImages:arrayOfImages]; 

我現在需要的,而它是動畫沿着路徑移動這個圖像視圖。我瀏覽了this example的源代碼。它使用UIBezierPath創建路徑,並使用CALayer來表示沿路徑移動的對象。但是,我會如何做這個動畫UIImageView?

非常感謝您的任何建議。

回答

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"];