static int numberOfShakes = 4;//震动次数
static float durationOfShake = 0.3f;//震动时间
static float vigourOfShake = 0.03f;//震动幅度
- (CAKeyframeAnimation *)shakeAnimation:(CGRect)frame
{
CAKeyframeAnimation *shakeAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
CGMutablePathRef shakePath = CGPathCreateMutable();
CGPathMoveToPoint(shakePath, NULL, CGRectGetMidX(frame), CGRectGetMidY(frame));
for (int index = 0; index < numberOfShakes; ++index)
{
CGPathAddLineToPoint(shakePath, NULL, CGRectGetMidX(frame) - frame.size.width * vigourOfShake,CGRectGetMidY(frame));
CGPathAddLineToPoint(shakePath, NULL, CGRectGetMidX(frame) + frame.size.width * vigourOfShake,CGRectGetMidY(frame));
}
CGPathCloseSubpath(shakePath);
shakeAnimation.path = shakePath;
shakeAnimation.duration = durationOfShake;
CFRelease(shakePath);
return shakeAnimation;
}
// // 调用震动动画
// CAKeyframeAnimation *animation = [self shakeAnimation:detailView.layer.frame];
// [detailView.layer addAnimation:animation forKey:kCATransition];
震屏动画
最新推荐文章于 2023-05-18 17:41:01 发布