#import "ViewController.h" @interface ViewController () @property(nonatomic,strong)CALayer *imageLayer; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIImage *image1=[UIImage imageNamed:@"1"]; self.imageLayer=[CALayer layer]; self.imageLayer.frame=CGRectMake(0, 0, 375, 300); self.imageLayer.contents=(__bridge id)image1.CGImage; [self.view.layer addSublayer:self.imageLayer]; [self performSelector:@selector(layerAnimation) withObject:nil afterDelay:3]; } -(void)layerAnimation { /*隐式动画 UIImage *image2=[UIImage imageNamed:@"2"]; self.imageLayer.contents=(__bridge id)image2.CGImage; */ //显示动画,图片动画 UIImage *image2=[UIImage imageNamed:@"2"]; CABasicAnimation *basicAnimation=[CABasicAnimation animationWithKeyPath:@"contents"]; basicAnimation.fromValue=self.imageLayer.contents; basicAnimation.toValue=(__bridge id)image2.CGImage; basicAnimation.duration=3.0f; //bounds动画 CABasicAnimation *boundsAnimation=[CABasicAnimation animationWithKeyPath:@"bounds"]; boundsAnimation.fromValue=[NSValue valueWithCGRect:self.imageLayer.bounds]; boundsAnimation.toValue=[NSValue valueWithCGRect:CGRectMake(0, 0, 375/2.0f, 300/2.0f)]; boundsAnimation.duration=3.0f; //组合动画 CAAnimationGroup *groupAnimation=[CAAnimationGroup animation]; groupAnimation.animations=@[basicAnimation,boundsAnimation]; groupAnimation.duration=3.0f; //设置layer动画结束后的值必须设置,否则的话会恢复动画之前的状态 self.imageLayer.contents=(__bridge id)image2.CGImage; self.imageLayer.bounds=CGRectMake(0, 0, 375/2.0f, 300/2.0f); [self.imageLayer addAnimation:basicAnimation forKey:nil]; } @end