关于CAShapeLayer、UIBezierPath、Draw

2018-05-15  本文已影响17人  ElaineYin
CAShapeLayer & CALayer
  1. CAShapeLayer继承自CALayer,因此,可使用CALayer的所有属性。CAShapeLayer有不同于CALayer的属性,它从CALayer继承而来的属性在绘制时是不起作用的。
  2. 普通CALayer在被初始化的时候是需要给一个frame的值的,这个frame值一般都与给定view的bounds值一致,它本身是有形状的,而且是矩形。CAShapeLayer初始化时也需要指定frame值,但它本身没有形状,它的形状来源于其属性path。
  3. CAShapeLayer高效使用内存。一个CAShapeLayer不需要像普通CALayer一样创建一个寄宿图形,所以无论有多大,都不会占用太多的内存。
  4. CAShapeLayer不会被图层边界剪裁掉。一个CAShapeLayer可以在边界之外绘制。图层路径不会像在使用Core Graphics的普通CALayer一样被剪裁掉。
CAShapeLayer & UIBezierPath
  1. CAShapeLayer是基于贝塞尔曲线而存在的。CAShapeLayer依附于一个给定的path(路径),必须给与path,path由贝塞尔曲线提供,CAShapeLayer在提供的路径中进行渲染。路径会闭环,所以绘制出了形状。
CAShapeLayer & DrawRect
  1. CAShapeLayer属于CoreAnimation框架,通过GPU来渲染图形,节省性能。动画渲染直接提交给手机GPU,不消耗内。
  2. DrawRect:DrawRect属于CoreGraphic框架,占用CPU,消耗性能大。
上一篇下一篇

猜你喜欢

热点阅读