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 动画?