-(void)quadCurveMove
{
UIView * roundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
roundView.backgroundColor = RandColor;
[roundView addRadius:10];
[self.roundViewArray addObject:roundView];
roundView.x = (self.width - roundView.width)+roundView.width*0.5;;
roundView.y = (self.height - roundView.height)-roundView.height*0.5;
[self addSubview:roundView];
//起始点
CGPoint startPoint= CGPointMake(roundView.x, roundView.y);
//结束点
CGPoint endPoint= CGPointMake(self.countLabel.x+self.countLabel.width*0.5, self.countLabel.y+self.countLabel.height*0.5);
//控制点
CGPoint controlPoint = CGPointMake(endPoint.x+((startPoint.x-endPoint.x))*0.5, -100);
//绘制贝塞尔曲线
UIBezierPath * movePath = [UIBezierPath bezierPath];
[movePath moveToPoint:startPoint];
[movePath addQuadCurveToPoint:endPoint controlPoint:controlPoint];
//关键帧动画
CAKeyframeAnimation *keyFrameAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
[keyFrameAnimation setDuration:0.4];
keyFrameAnimation.path = movePath.CGPath;
keyFrameAnimation.fillMode = kCAFillModeForwards;
keyFrameAnimation.removedOnCompletion = NO;
keyFrameAnimation.delegate = self;
[roundView.layer addAnimation:keyFrameAnimation forKey:@"movingAnimation"];
}
//动画结束调用该方法
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
self.count+=1;
self.countLabel.text=[NSString stringWithFormat:@"%ld",self.count];
[self.roundViewArray.firstObject removeFromSuperview];
[self.roundViewArray removeObjectAtIndex:0];
}
iOS 贝塞尔曲线动画简单实现
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 我的博客地址:www.viggoz.com 上篇文章简单总结了一下网页和移动App中借助bodymovin实现动画...
- iOS 使用 CAShapeLayer 与贝塞尔曲线实现进度圆的动画 1.创建一个继承于 view 的 Circl...