0

我需要图像像 15 个单位一样在屏幕上显示,放慢速度(不是立即停止),然后再降下来。我对此很陌生,不知道该怎么做。我希望有人能帮帮忙。如果您需要更多信息,请与我们联系。谢谢!

4

2 回答 2

4

您可以使用 2 条路径:CABasicAnimation 或 UIView 动画(代码差异不大)。UIView 更简单,更适合简单的动画。CAAnimation 需要 Quartz 框架,也有更多更低的偏好。这两个指南将有助于http://www.raywenderlich.com/2454/how-to-use-uiview-animation-tutorialhttp://www.raywenderlich.com/5478/uiview-animation-tutorial-practical-recipes

使用 CAAnimation 简单(例如):

-(void)animationRotation
 {
      CABasicAnimation *anim;
      anim = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
      anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];  // this what you need - slow down (not an immediate stop)
     anim.duration = 0.5;
     anim.repeatCount = 1;

      anim.fromValue = [NSNumber numberWithFloat:0];
      [anim setDelegate:self];    

      anim.toValue = [NSNumber numberWithFloat:(15)];
      [myView.layer addAnimation:anim forKey:@"transform"];

      CGAffineTransform rot = CGAffineTransformMakeTranslation(15.0);
       myView.transform = rot;
 }
于 2012-08-04T21:25:20.613 回答
1

您获取包含图像的 UIImageView 并使用animateWithDuration:delay:options:animations:completion:. 在动画块中,您只需更改frame图像视图的。

options你使用UIViewAnimationOptionCurveEaseOut上升。

完成后,您将立即开始第二个动画,这次使用UIViewAnimationOptionCurveEaseIn. 因此

NSTimeInterval durationUp = 1.5;
[UIView animateWithDuration:durationUp delay:0.0 
   options:UIViewAnimationOptionCurveEaseOut 
   animations:^{
      CGRect f = imageView.frame;
      f.origin.y += 15;
      imageView.frame = f;
   }
   completion:nil];

[UIView animateWithDuration:1.5 delay:durationUp 
   options:UIViewAnimationOptionCurveEaseIn 
   animations:^{
      CGRect f = imageView.frame;
      f.origin.y -= 15;
      imageView.frame = f;
   }
   completion:nil];
于 2012-08-04T21:24:41.583 回答