- (void)basicAnimation {
//基础属性动画
//keyPath:属性键路径,通过路径的形式访问对象的指定属性
//1.平移
CABasicAnimation *positionAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
positionAnimation.duration = 0.5;
positionAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//配置起始位置(fromeVaue)和终止位置(toValue)
positionAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(160, 284)];
positionAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(160, 50)];
//防止执行完成后移除
positionAnimation.removedOnCompletion = NO;
positionAnimation.fillMode = kCAFillModeForwards;
[self.view.layer addAnimation:positionAnimation forKey:@"position"];
//2.翻转
CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
rotationAnimation.duration = 0.5;
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//配置起始位置(fromeVaue)和终止位置(toValue)
rotationAnimation.fromValue = @(0);
rotationAnimation.toValue = @(M_PI);// M_PI *2 360'
//防止执行完成后移除
rotationAnimation.removedOnCompletion = NO;
rotationAnimation.fillMode = kCAFillModeForwards;
[self.view.layer addAnimation:rotationAnimation forKey:@"rotation"];
//3.透明度
CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
opacityAnimation.duration = 0.5;
opacityAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//配置起始位置(fromeVaue)和终止位置(toValue)
opacityAnimation.fromValue = @(1.0);
opacityAnimation.toValue = @(0.5);
//防止执行完成后移除
opacityAnimation.removedOnCompletion = NO;
opacityAnimation.fillMode = kCAFillModeForwards;
//用最后的动画设置代理进行下一个动画
opacityAnimation.delegate = self;
[self.view.layer addAnimation:opacityAnimation forKey:@"opacity"];
}
用来还原的动画:
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
CABasicAnimation *positionAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
positionAnimation.duration = 0.5;
positionAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//配置起始位置(fromeVaue)和终止位置(toValue)
positionAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(160, 50)];
positionAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(160, 284)];
[self.view.layer addAnimation:positionAnimation forKey:@"position"];
//2.翻转
CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
rotationAnimation.duration = 0.5;
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//配置起始位置(fromeVaue)和终止位置(toValue)
rotationAnimation.fromValue = @(M_PI);
rotationAnimation.toValue = @(M_PI *2);//360'
[self.view.layer addAnimation:rotationAnimation forKey:@"rotation"];
//3.透明度
CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
opacityAnimation.duration = 0.5;
opacityAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//配置起始位置(fromeVaue)和终止位置(toValue)
opacityAnimation.fromValue = @(0.5);
opacityAnimation.toValue = @(1.0);
[self.view.layer addAnimation:opacityAnimation forKey:@"opacity"];
}