2012-04-17 57 views
2

我很新的iOS動畫,我想知道是否有可能結合兩個圖像之間的轉換以及使用CGAffineTransform的UIImageView的翻譯動畫?iOS5將CGAffineTransform與animationImages結合在一起?

換句話說,我有兩張我想在兩者之間進行動畫處理的圖像,然後我想應用同步翻譯,以便在整個頁面上移動,同時在兩個圖像之間來回移動。

我知道我可以應用CGAffineTransformConcat來合併兩個CGAffineTransforms,例如CGAffineTransformTranslate和其他東西。但是我沒有看到CGAffineTransform允許我轉換到另一個UIImage。

我知道在圖像之間進行動畫處理的唯一方法是使用UIImageView animationImages陣列與startAnimating相結合。然而,我不知道如何結合這樣的翻譯如下:

UIImageView* textView = [[UIImageView alloc] initWithFrame:bunnyImage.frame]; 

textView.animationImages = [NSArray arrayWithObjects:  
          [UIImage imageNamed:@"bunnyclose.png"], 
          [UIImage imageNamed:@"bunnytalk.png"], 
          nil]; 

textView.animationDuration = 1.0; 
textView.animationRepeatCount = 8; 
[textView startAnimating]; 

[self.view addSubview:textView];  

有什麼建議嗎?

回答

2

在回答我自己的問題時,"Creating Animated Transitions Between Views"中討論的塊動畫功能transitionFromView:toView:duration:options:completion是我提出的最佳解決方案。我使用它在圖像之間進行動畫處理,這可以與使用CGAffineTransformTranslate的塊動畫animateWithDuration:delay:options:animations:completion:相結合,或者只需更改UIImageView的center,如Animations中所述。

返工我原來的代碼塊,加入我的翻譯看起來是這樣的:

UIImageView* bunny2View = [[UIImageView alloc] initWithFrame:bunny2Image.frame]; 


[UIView 
transitionFromView:bunny2Image 
toView:bunny2View 
duration:10.0 
options:UIViewAnimationOptionShowHideTransitionViews 
completion:^(BOOL finished) { 
    [UIView 
     animateWithDuration:dur 
     animations:^(void) { 
      CGPoint center = bunny2Image.center; 
      center.y += deltay; 
      bunny2Image.center = center; 
      bunny2View.center = center; 
     } 
     completion:^(BOOL finished) { 

      [UIView 
      transitionFromView:bunny2View 
      toView:bunny2Image 
      duration:10.0 
      options:UIViewAnimationOptionShowHideTransitionViews 
      completion:nil]; 
     }]; 
}]; 

工作還在進行中,但是這是我想出爲止!