我需要图像像 15 个单位一样在屏幕上显示,放慢速度(不是立即停止),然后再降下来。我对此很陌生,不知道该怎么做。我希望有人能帮帮忙。如果您需要更多信息,请与我们联系。谢谢!
问问题
1595 次
2 回答
4
您可以使用 2 条路径:CABasicAnimation 或 UIView 动画(代码差异不大)。UIView 更简单,更适合简单的动画。CAAnimation 需要 Quartz 框架,也有更多更低的偏好。这两个指南将有助于http://www.raywenderlich.com/2454/how-to-use-uiview-animation-tutorial,http://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 回答