CAShapeLayer

Posted Leoo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAShapeLayer相关的知识,希望对你有一定的参考价值。

一、关于CAShapeLayer

  1.CAShapeLayer 继承于 CALayer 属于CoreAnimation框架(通过GPU来渲染图形),所以 CAShapeLayer 相对于 CoreGraphics 框架(使用CPU绘制图形)下的DrawRect绘图方法更高效,节省内存。

  2.CAShapeLayer 的使用需要为其设置 path,一般使用 UIBezierPath 或 CGMutablePathRef 为其提供path。如果绘制动态图形可以使用 CADisplayLink 来产生变化的path。

  3.CAShapeLayer 的 path 是闭合封闭的,绘制时会对你提供的非闭合路径自动封闭。

  4.CAShapeLayer 本身是没有形状,它更具提供的 path 去绘制形状。CALayer 初始化后则是矩形的。

二、使用示例

  1.使用 UIBezierPath 提供 path 绘制静图形

- (void)darwStaticShapeLayer{
    //创建出CAShapeLayer
    self.shapeLayer = [CAShapeLayer layer];
    self.shapeLayer.anchorPoint = self.view.center;
    //填充颜色为ClearColor
    self.shapeLayer.fillColor = [UIColor clearColor].CGColor;
    //设置线条的宽度和颜色
    self.shapeLayer.lineWidth = 4.0f;
    self.shapeLayer.strokeColor = [UIColor redColor].CGColor;
    //绘制的起点和终点 range[0,1]
    self.shapeLayer.strokeStart = 0;
    self.shapeLayer.strokeEnd = 0.75;
    //创建出圆形贝塞尔曲线
    UIBezierPath *circlePath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(100, 100, 150, 150)];
    
    //设置CAShapeLayer的path
    self.shapeLayer.path = circlePath.CGPath;
    //显示
    [self.view.layer addSublayer:self.shapeLayer];
}

   2.使用 CGMutablePathRef 提供 path 绘制动画

 

以上是关于CAShapeLayer的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CAShapeLayer 使我的 UIBezierPath 动画?

用 CAShapeLayer 实现绘制渐变弧

CAShapeLayer 上的渐变颜色效果

如何将 CAShapeLayer 转换为 CAGradientLayer?

CAShapeLayer 偏离中心

CAShapeLayer 动画的完成块