CAShapeLayer简介
1.1 CAShapeLayer继承自CALayer,继承了属性方法CAShapeLayer,功能强大
CAShapeLayer是矢量图形绘制的图层子类。设定颜色和线宽等属性,类似于ps软件的钢笔功能如CGPath来定义想要绘制的图形,自动渲染出来了。当然,另一种选择Core Graphics直接向原始的CALyer的内容中绘制一个路径,但是:CAShapeLayer优点多多:
今天制作花版功能,10000层,相差20s。
- 渲染快,CAShapeLayer的硬件加速,比同级别的Core Graphics强不少。
- 内存高效处理。CALayer需要构建uiview类似的生命体系,CAShapeLayer开启对应模拟花板而已。
- 跨越便捷的CAShapeLayer可以在边界之外绘制,结合ios 去除图像叠加行数,非常便捷
- CAShapeLayer 可快速的3D变换时。
1.2 CAShapeLayer与贝塞尔曲线相辅相成。
贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。贝塞尔曲线是计算机图形学中相当重要的参数曲线,在一些比较成熟的位图软件中也有贝塞尔曲线工具,如PhotoShop等。在Flash4中还没有完整的曲线工具,而在Flash5里面已经提供出贝塞尔曲线工具。
1.3 使用CAShapeLayer与贝塞尔曲线可以实现不在view的drawRect方法中画出有一些想要的图形
1.4 CAShapeLayer属于CoreAnimation框架,其动画渲染直接提交到手机的GPU当中,相较于view的drawRect方法使用CPU渲染而言,其效率极高,能大大优化内存使用情况。
2、CAShapeLayer与UIBezierPath的关系
2.1 CAShapeLayer中shape代表形状的意思,所以需要形状才能生效
2.2 贝塞尔曲线可以创建基于矢量的路径,而UIBezierPath类是对CGPathRef的封装
2.3 贝塞尔曲线给CAShapeLayer提供路径,CAShapeLayer在提供的路径中进行渲染。路径会闭环,所以绘制出了Shape
2.4 用于CAShapeLayer的贝塞尔曲线作为path,其path是一个首尾相接的闭环的曲线,即使该贝塞尔曲线不是一个闭环的曲线