2014-11-17 52 views
0

我想在系列中创建一组动画。 例如iOS系列动画系列

  • 淡入2秒

  • 旋转2秒

  • 淡出2秒

什么是实现这一目标的最佳途径?我试图使用CAAnimation小组,但似乎并行地为其动画数组制作动画。我想做一个动画1,然后做动画2,然后做动画3(系列)

+0

使用动画组,但致命的每个动画,直到前应该已经结束。 – rckoenes

回答

2

您应该对所有这些动画使用基于块的动画。

对于这样一个动画的animateKeyFrames块将是完美的......

// set duration for the entire sequence of animations 
[UIView animateKeyFramesWithDuration:6 
           delay:0 
          options:0 
          animations:^{ 
           // add fade in keyframe 
           // starts at 0% lasts for 33% of animation 
           [UIView addKeyFrameWithRelativeStartTime:0 
                 relativeDuration:0.333 
                  animations:^{ 
                   view.alpha = 1.0; 
                  }]; 
           // add rotation key frame 
           // starts at 33% lasts for 33% of animation 
           [UIView addKeyFrameWithRelativeStartTime:0.333 
                 relativeDuration:0.333 
                  animations:^{ 
                   view.transform = CGAffineTransformMakeRotation(rotationAngle); 
                  }]; 
           // add fade out key frame 
           // starts at 66% lasts for 33% of animation 
           [UIView addKeyFrameWithRelativeStartTime:0.666 
                 relativeDuration:0.333 
                  animations:^{ 
                   view.alpha = 0.0; 
                  }]; 
          } 
          completion:nil]; 
+0

@Rob哎呀!完成了,谢谢。 – Fogmeister

+0

淡入和淡出工作正常 - 旋转不会发生。我在Radians 6.28中指定了360度的旋转角度 - 任何建议。? – OneGuyInDc

+0

啊,首先你应该用'M_PI'来代替pi,然后再乘以2.不是6.28。其次,因为2π弧度与0相同,它不会旋转。将旋转分为两部分。一轮旋转到M_PI,另一轮旋转到2 * M_PI,您将不得不更新时间。 – Fogmeister

3

现在,你通常会通过animateKeyframesWithDuration使用UIView块动画。指定6秒的动画持续时间,然后将三个调用分别添加到addKeyframeWithRelativeStartTime,分别从相对起始时间0,0.333和0.666开始,每个持续时间为0.333,并在这三个动画块中执行适当的动画。