第一种 隐式动画
这是一种最简单的动画,不用设置定时器,不用考虑线程或者重画
实现代码:
#import <QuartzCore/QuartzCore.h>
-(void)clickButton:(UIButton*)button
{
[UIView beginAnimations:nil
context:nil];
CGAffineTransform transform=CGAffineTransformMakeTranslation(180, 200);
[self.imageView.layer setAffineTransform:transform];
self.imageView.layer.opacity=1;
[UIView commitAnimations];
}
操作layer,IOS的动画都是操作layer
第二种、显示动画
CABasicAnimation *opAnim=[CABasicAnimation animationWithKeyPath:@"opacity"];
opAnim.duration=6.0;
opAnim.fromValue=[NSNumber numberWithFloat:25];
opAnim.toValue=[NSNumber numberWithFloat:1.0];
opAnim.cumulative=YES;
opAnim.repeatCount=1;
[self.imageView.layer addAnimation:opAnim forKey:@"animateOpacity"];
CGAffineTransform moveTransform=CGAffineTransformMakeTranslation(200, 200);
CABasicAnimation *moveAnim=[CABasicAnimation animationWithKeyPath:@"transform"];
moveAnim.duration=6.0;
moveAnim.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeAffineTransform(moveTransform)];
[self.imageView.layer addAnimation:moveAnim forKey:@"animateTransform"];
第三种、关键帧显示动画
CAKeyframeAnimation *opAnim=[CAKeyframeAnimation animationWithKeyPath:@"opacity"];
opAnim.duration=6.0;
opAnim.values=@[@0.25,@0.75,@1.0];
opAnim.keyTimes=@[@0.0,@0.5,@1.0];
[self.imageView.layer addAnimation:opAnim forKey:@"animateOpacity"];
CGAffineTransform moveTransform=CGAffineTransformMakeTranslation(180, 200);
CABasicAnimation *moveAnim=[CABasicAnimation animationWithKeyPath:@"transform"];
moveAnim.duration=6.0;
moveAnim.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeAffineTransform(moveTransform)];
moveAnim.delegate=self;
[self.imageView.layer addAnimation:moveAnim forKey:@"animateTransform"];
values是一个值的数组
keyTimes是一个每个帧片段持续的时间比例,取值范围是0.0-1.0之前