2

我对 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];    

有什么建议么?

4

1 回答 1

2

在回答我自己的问题时,“创建视图之间的动画过渡”中讨论的块动画函数transitionFromView:toView:duration:options:completion是我想出的最佳解决方案。我使用它在图像之间制作动画,这可以与块动画animateWithDuration:delay:options:animations:completion:结合使用 CGAffineTransformTranslate 或简单地更改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];
      }];
 }]; 

仍在进行中,但这是我迄今为止提出的!

于 2012-04-19T15:36:59.253 回答