#pragma mark - 矫正不倒翁位置
- (void)setAnchorPoint:(CGPoint)anchorpoint forView:(UIView *)view{
CGRect oldFrame = view.frame;
view.layer.anchorPoint = anchorpoint;
view.frame = oldFrame;
}
- (void)startShowAnimation{
[self setAnchorPoint: CGPointMake(0.5,1) forView:_babyImage];
CABasicAnimation *displacementYAnimation = [CABasicAnimation animationWithKeyPath:@"position.y"];
displacementYAnimation.fromValue = @(_babyImage.layer.position.y);
displacementYAnimation.toValue = @(_babyImage.layer.position.y-5);
displacementYAnimation.duration = 0.01;
displacementYAnimation.removedOnCompletion = NO;
displacementYAnimation.fillMode = kCAFillModeForwards;
CABasicAnimation* startAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
startAnimation.toValue = [NSNumber numberWithFloat:-(M_PI/4) ];
startAnimation.duration = 0.2;
startAnimation.beginTime = 0.01;
startAnimation.cumulative = NO;
startAnimation.removedOnCompletion = NO;
startAnimation.fillMode = kCAFillModeForwards;
CABasicAnimation *backCenterAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
backCenterAnimation.toValue = [NSNumber numberWithFloat:0];
backCenterAnimation.duration = 0.2;
backCenterAnimation.beginTime = 0.2;
backCenterAnimation.removedOnCompletion = NO;
backCenterAnimation.fillMode = kCAFillModeForwards;
CABasicAnimation *endAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
endAnimation.toValue = [NSNumber numberWithFloat:(M_PI/4) ];
endAnimation.duration = 0.2;
endAnimation.beginTime = 0.4;
endAnimation.removedOnCompletion = NO;
endAnimation.fillMode = kCAFillModeForwards;
CABasicAnimation *backAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
backAnimation.toValue = [NSNumber numberWithFloat:0];
backAnimation.duration = 0.2;
backAnimation.beginTime = 0.6;
backAnimation.removedOnCompletion = NO;
backAnimation.fillMode = kCAFillModeForwards;
CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
animationGroup.animations = @[displacementYAnimation,startAnimation,backCenterAnimation,endAnimation,backAnimation];
animationGroup.duration = 0.8;
animationGroup.repeatCount = 8;
[_babyImage.layer addAnimation:animationGroup forKey:@"rotationAnimationZ"];
}
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{
if (motion == UIEventSubtypeMotionShake) {
[self startShowAnimation];
}
}