CAShapeLayer

(1)1,CAShapeLayer继承自CALayer,可使用CALayer的所有属性

          2,CAShapeLayer需要和贝塞尔曲线配合使用才有意义。

(2)关于CAShapeLayer和DrawRect的比较

         DrawRect:DrawRect属于CoreGraphic框架,占用CPU,消耗性能大

         CAShapeLayer:CAShapeLayer属于CoreAnimation框架,通过GPU来渲染图形,节省性能。动画渲染直接提交给手机GPU,不消耗内存。gpu是图像处理器。

(3)贝塞尔曲线与CAShapeLayer的关系

      1,CAShapeLayer中shape代表形状的意思,所以需要形状才能生效

     2,贝塞尔曲线可以创建基于矢量的路径

      3,贝塞尔曲线给CAShapeLayer提供路径,CAShapeLayer在提供的路径中进行渲染。路径会闭环,所以绘制出了Shape

    4,用于CAShapeLayer的贝塞尔曲线作为Path,其path是一个首尾相接的闭环的曲线,即使该贝塞尔曲线不是一个闭环的曲线

    5,画出一个圆代码

//创建出CAShapeLayer

self.shapeLayer = [CAShapeLayer layer];

self.shapeLayer.frame = CGRectMake(0, 0, 100, 100);

//设置shapeLayer的尺寸和位置 一般和它显示的view bounds 一样

self.shapeLayer.position = self.view.center;

self.shapeLayer.fillColor = [UIColor clearColor].CGColor;//填充颜色为ClearColor

//设置线条的宽度和颜色

self.shapeLayer.lineWidth = 1.0f;

self.shapeLayer.strokeColor = [UIColor redColor].CGColor;

//创建出圆形贝塞尔曲线

UIBezierPath *circlePath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 50, 50)];

//让贝塞尔曲线与CAShapeLayer产生联系

self.shapeLayer.path = circlePath.CGPath;

//添加并显示

[self.view.layer addSublayer:self.shapeLayer];}

   6,圆形加载图

推荐阅读更多精彩内容