城之内

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
 

CAShapeLayer简介

CAShapeLayer是CALayer的子类,是Quare 2D中对图层操作最基本的一个扩展。通过它,我们可以绘制各种图形,特别是不规则图形。

每个CAShapeLayer对象都代表着将要被渲染到屏幕上的形状(shape)。具体的形状由其path(类型为CGPathRef)属性指定,形状可以是任意的,比如星形、菱形等等。

普通的CALayer在初始化时需要指定frame值,它本身是有形状,而且是矩形。CAShapeLayer初始化时也需要指定frame值,但它本身没有形状,它的形状来源于其属性path。

比较有趣的是,系统仅会渲染CAShapeLayer对象的形状,其他任何非CAShapeLayer自有属性的设置,在渲染时都会被忽略。因此从某种意义上说,CAShapeLayer仅是形状的容器。虽然由于其是CALayer的子类,你可以设置contents、backgroundColor等属性,但这些属性在渲染时也会被忽略。

由于设置CALayer的属性无意义,CAShapeLayer提供了自身的可设置属性,比如fillColor、strokeColor等。如下图,具体属性意义可参考官方文档

CAShapeLayerProperty

 

下面是具体示例,我们经常配合使用UIBezierPath生成相应的path,方便绘制各种图形。

CAShapeLayerDemo1

 

动画

由于CAShapeLayer实质还是一个layer,那么一切都是可动画的,甚至是path属性。Core Animation引擎通过插值的方法,实现从当前path到新path变化,从而实现形状的变化动画。结合CABasicAnimation,我们可以实现许多很绚的动画。下面是一个具体示例:

CAShapeLayerDemo2

实现效果如下:

CAShapeLayerAmination

注:国外开发者提供的Demo

EDSIOON

 

Post navigation

EDSIOON

iOS开发者,目前就职于百度
2014年十二月
« 十一    
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31  

目录

posted on 2014-12-17 10:24  城之内  阅读(163)  评论(0)    收藏  举报