2012-04-17 56 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]; 
     }]; 
}]; 

工作还在进行中,但是这是我想出为止!