1.跳动效果的实现
+ (void)popJumpAnimationView:(UIView *)sender
CGFloat duration = 1.f;
CGFloat height = 7.f;
CAKeyframeAnimation * animation = [CAKeyframeAnimation animationWithKeyPath:@"transform.translation.y"];
CGFloat currentTy = sender.transform.ty;
animation.duration = duration;
animation.values = @[@(currentTy), @(currentTy - height/4), @(currentTy-height/4*2), @(currentTy-height/4*3), @(currentTy - height), @(currentTy-height/4*3), @(currentTy -height/4*2), @(currentTy - height/4), @(currentTy)];
animation.keyTimes = @[ @(0), @(0.025), @(0.085), @(0.2), @(0.5), @(0.8), @(0.915), @(0.975), @(1) ];
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animation.repeatCount = HUGE_VALF;
[sender.layer addAnimation:animation forKey:@"kViewShakerAnimationKey"];
+ (void)popRotationAnimation:(UIView *)sender
{
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
//默认是顺时针效果,若将fromValue和toValue的值互换,则为逆时针效果
animation.fromValue = [NSNumber numberWithFloat:0.f];
animation.toValue = [NSNumber numberWithFloat:M_PI *2];
animation.duration = 1.5f;
animation.autoreverses = NO;
animation.fillMode = kCAFillModeForwards;
animation.repeatCount = 500;
[sender.layer addAnimation:animation forKey:nil];
}