2012-04-17 3 views
2

Я довольно новичок в iOS-анимации, и мне интересно, можно ли сочетать переход между двумя изображениями вместе с анимацией трансляции UIImageView с использованием CGAffineTransform?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

В ответ на мой вопрос, функция анимации блока transitionFromView:toView:duration:options:completion, как обсуждалось в "Creating Animated Transitions Between Views", является лучшим решением, которое я придумал. Я использую это для анимации между изображениями, и это можно комбинировать с анимацией блока animateWithDuration:delay:options:animations:completion: с использованием CGAffineTransformTranslate или просто путем изменения 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]; 
     }]; 
}]; 

все еще в стадии разработки, но это то, что я придумал до сих пор!

Смежные вопросы