CAShapeLayer简介
CAShapeLayer是CALayer的子类,是Quare 2D中对图层操作最基本的一个扩展。通过它,我们可以绘制各种图形,特别是不规则图形。
每个CAShapeLayer对象都代表着将要被渲染到屏幕上的形状(shape)。具体的形状由其path(类型为CGPathRef)属性指定,形状可以是任意的,比如星形、菱形等等。
普通的CALayer在初始化时需要指定frame值,它本身是有形状,而且是矩形。CAShapeLayer初始化时也需要指定frame值,但它本身没有形状,它的形状来源于其属性path。
比较有趣的是,系统仅会渲染CAShapeLayer对象的形状,其他任何非CAShapeLayer自有属性的设置,在渲染时都会被忽略。因此从某种意义上说,CAShapeLayer仅是形状的容器。虽然由于其是CALayer的子类,你可以设置contents、backgroundColor等属性,但这些属性在渲染时也会被忽略。
由于设置CALayer的属性无意义,CAShapeLayer提供了自身的可设置属性,比如fillColor、strokeColor等。如下图,具体属性意义可参考官方文档
下面是具体示例,我们经常配合使用UIBezierPath生成相应的path,方便绘制各种图形。
动画
由于CAShapeLayer实质还是一个layer,那么一切都是可动画的,甚至是path属性。Core Animation引擎通过插值的方法,实现从当前path到新path变化,从而实现形状的变化动画。结合CABasicAnimation,我们可以实现许多很绚的动画。下面是一个具体示例:
实现效果如下:
注:国外开发者提供的Demo




浙公网安备 33010602011771号