您的位置:首页 > 移动开发 > IOS开发

ios 做不倒翁动画效果

2016-07-04 15:33 736 查看
#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];
}
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: