iOS5将CGAffineTransform与animationImages结合起来?

时间:2012-04-17 15:58:03

标签: animation ios5 uiimageview uiimage cgaffinetransform

我对iOS动画很陌生,我想知道是否可以使用CGAffineTransform组合两个图像之间的过渡以及UIImageView的翻译动画?

换句话说,我有两个想要在它们之间制作动画的图像,然后我想应用同步翻译,以便整个事物在两个图像之间来回移动时在页面上移动。

我知道我可以应用CGAffineTransformConcat来组合两个CGAffineTransforms,例如CGAffineTransformTranslate等。但是我没有看到允许我转换到另一个UIImage的CGAffineTransform。

我知道在图像之间设置动画的唯一方法是使用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];    

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

在回答我自己的问题时,transitionFromView:toView:duration:options:completion中讨论的块动画函数"Creating Animated Transitions Between Views"是我提出的最佳解决方案。我使用它来在图像之间制作动画,这可以使用CGAffineTransformTranslate与块动画animateWithDuration:delay:options:animations:completion:结合使用,或者只需更改center中讨论的UIImageView的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];
      }];
 }]; 

仍在进行中,但这是我到目前为止所提出的建议!