@interface ViewController ()
@property (nonatomic,strong) UIImageView *imageView
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad]
[self.view addSubview:self.imageView]
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self.imageView.layer addAnimation:[self rainAnimationWithDuration:10] forKey:nil]
[self.imageView.layer addAnimation:[self rainAlphaWithDuration:10] forKey:nil]
[self.imageView.layer addAnimation:[self sunshineAnimationWithDuration:10] forKey:nil]
}
- (UIImageView *)imageView {
if (!_imageView) {
_imageView = [[UIImageView alloc] init]
_imageView.image = [UIImage imageNamed:@"zrx4.jpg"]
_imageView.frame = CGRectMake(100, 100, 50, 50)
}
return _imageView
}
//下雨动画方法
- (CABasicAnimation *)rainAnimationWithDuration:(NSInteger)duration {
CABasicAnimation* caBaseTransform = [CABasicAnimation animation]
caBaseTransform.duration = duration
caBaseTransform.keyPath = @"transform"
caBaseTransform.repeatCount = MAXFLOAT
caBaseTransform.removedOnCompletion = NO
caBaseTransform.fillMode = kCAFillModeForwards
caBaseTransform.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, 0, 0)]
caBaseTransform.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(300, 300, 0)]
return caBaseTransform
}
//透明度动画
- (CABasicAnimation *)rainAlphaWithDuration:(NSInteger)duration {
CABasicAnimation *showViewAnn = [CABasicAnimation animationWithKeyPath:@"opacity"]
showViewAnn.fromValue = [NSNumber numberWithFloat:1.0]
showViewAnn.toValue = [NSNumber numberWithFloat:0.1]
showViewAnn.duration = duration
showViewAnn.repeatCount = MAXFLOAT
showViewAnn.fillMode = kCAFillModeForwards
showViewAnn.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]
showViewAnn.removedOnCompletion = NO
return showViewAnn
}
//动画旋转方法
- (CABasicAnimation *)sunshineAnimationWithDuration:(NSInteger)duration {
//旋转动画
CABasicAnimation* rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 ]
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]
rotationAnimation.duration = duration
rotationAnimation.repeatCount = MAXFLOAT
rotationAnimation.cumulative = NO
rotationAnimation.removedOnCompletion = NO
rotationAnimation.fillMode = kCAFillModeForwards
return rotationAnimation
}
@end
