前言借鉴标哥的博客部分文章:http://www.henishuo.com/ios-cashapelayer-learning/
CAShapeLayer和drawRect的比较:
drawRect:属于CoreGraphics框架,占用CPU,性能消耗大,不建议重写
CAShapeLayer:属于CoreAnimation框架,通过GPU来渲染图形,节省性能。动画渲染直接提交给手机GPU,不消耗内存,这两者各有各的用途,而不是说有了CAShapeLayer就不需要drawRect。
温馨提示:drawRect只是一个方法而已,是UIView的方法,重写此方法可以完成我们的绘制图形功能。
CAShapeLayer与UIBezierPath的关系:
CAShapeLayer中shape代表形状的意思,所以需要形状才能生效
贝塞尔曲线可以创建基于矢量的路径,而UIBezierPath类是对CGPathRef的封装
贝塞尔曲线给CAShapeLayer提供路径,CAShapeLayer在提供的路径中进行渲染。路径会闭环,所以绘制出了Shape,用于CAShapeLayer的贝塞尔曲线作为path,其path是一个首尾相接的闭环的曲线,即使该贝塞尔曲线不是一个闭环的曲线
示例简介:
在饼图上显示数组中几个数据各占有的百分比,SliceLayer是CAShapeLayer的子类,用于构造饼图的各个扇面和选中某扇面的动画效果,PieChart是UIView的子类,用于根据数组的数据情况来设置饼图的各个扇面和触摸方法,最后在VC中调用即可。
示例代码: