抛物动画

此动画在于运用 CAKeyframeAnimation 关键帧动画,以及贝塞尔关键帧动画

- (void)throwObject:(UIView *)obj fromPoint:(CGPoint)startPoint toPoint:(CGPoint)endPoint height:(CGFloat)height duration:(CGFloat)duration {

self.showingView = obj;

// 初始化抛物线 path

CGMutablePathRef path = CGPathCreateMutable();

CGFloat cpx = (startPoint.x + endPoint.x)/2;

CGFloat cpy = -height;

CGPathMoveToPoint(path, NULL, startPoint.x, startPoint.y);

CGPathAddQuadCurveToPoint(path, NULL, cpx, cpy, endPoint.x, endPoint.y);

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];

animation.path = path;

CFRelease(path);

CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

scaleAnimation.autoreverses = YES;

scaleAnimation.toValue = [NSNumber numberWithFloat:(CGFloat)((arc4random()%4) + 4)/10.0];

CAAnimationGroup *groupAnimation = [CAAnimationGroup animation];

groupAnimation.delegate = self;

groupAnimation.repeatCount = 1;

groupAnimation.duration = duration;

groupAnimation.removedOnCompletion = NO;

groupAnimation.animations = @[scaleAnimation,animation];

[obj.layer addAnimation:groupAnimation forKey:@"position scale"];

}

代码地址:抛物线动画 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容