今天突然对贝塞尔曲线很感兴趣。 哈哈
首先介绍下它能用来干嘛
只要你的数学够好 就没有你画不出来的图形。 哈哈
UIBezierPath :画贝塞尔曲线的path类
UIBezierPath定义 : 贝赛尔曲线的每一个顶点都有两个控制点,用于控制在该顶点两侧的曲线的弧度。
曲线的定义有四个点:起始点、终止点(也称锚点)以及两个相互分离的中间点。
滑动两个中间点,贝塞尔曲线的形状会发生变化。
UIBezierPath :对象是CGPathRef数据类型的封装,可以方便的让我们画出 矩形 、 椭圆 或者 直线和曲线的组合形状
UIBezierPath的属性介绍:
具体的属性我就不介绍了
推介看这篇博客 属性写的很详细
https://www.cnblogs.com/zhangying-domy/archive/2016/07/04/5640745.html
下午是画圆的 时候角度开始点 不是最上边
799670-20151013165000054-1437718277.png
我实现的效果
beisier.gif
demo:https://github.com/rjb0514/BezierPathDrawView
以上效果中 最后一个扇形的 加了动画效果
有个坑我得说下 代码是如下
//动画
[layersArr enumerateObjectsUsingBlock:^(CALayer * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
//添加动画
CABasicAnimation *anima = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
anima.duration = 1.5;
anima.fromValue = @0;
anima.toValue = @1;
anima.removedOnCompletion = NO;
anima.fillMode = kCAFillModeForwards;
CFTimeInterval time = [obj convertTime:CACurrentMediaTime() fromLayer:nil];
anima.beginTime = time + 1.5 * idx;
[obj addAnimation:anima forKey:nil];
}];
####这个beginTime很有讲究的 要不你实现不了这个动画
关于CAMediaTiming 协议属性详解 参考这个
https://blog.csdn.net/yaozhuoyu/article/details/9566511
关于CAAnimation 强烈推荐之前的老搭档的文章 人称老司机
https://www.jianshu.com/p/92a0661a21c6