上文提到图层的基本概念,这篇文章主要分开讲述图层CALayer的子类。包括:CAShapeLayer、CATextLayer、CATransformLayer、CAGradientLayer、CAReplicatorLayer、CAScrollLayer、CATiledLayer、CAEmitterLayer、CAEAGLLayer、AVPlayerLayer。
CAShapeLayer
CAShapeLayer是一个通过矢量路径绘制自定义形状的CALayer子类,这个形状可以为封闭的,也可以是不封闭的。但是你只有一次机会设置这些属性,如果你想用不同颜色或风格来绘制多个形状,只能为每个形状都准备一个CAShapeLayer图层。矢量路径赋值给path,这里涉及到一个类UIBezierPath。UIBezierPath继承于NSObject,可以创建基于矢量的路径。此类是Core Graphics框架关于path的一个OC封装。使用此类可以定义圆形、矩形、三角形、扇形等形状,也可以创建复杂的曲线形状。
UIBezierPath提供了一些默认的方法给我们调用,我们也可以自己自定义路径。
UIBezierPath也提供了绘制二次贝塞尔曲线和三次贝塞尔曲线的系统方法。这个不对贝塞尔曲线进行解释,自行百度。
至此UIBezierPath基本用法我们已经了解了,接下来就是将设置好的路径赋值给CAShapeLayer进行绘制。
CAGradientLayer
CAGradientLayer用于处理颜色渐变的图层。用法很简单,只要我们设置要显示的颜色数组和绘制的起点和终点即可。有一点需要注意,颜色的值需要为CGColorRef类型,但是OC数组只接受OC对象,即要在每个元素前面加上id类型,如果单单元素是UIColor类型,图层是没办法正常显示的。
CAReplicatorLayer
CAReplicatorLayer是一个容器,能对其子图层自动进行复制和属性偏移,利用它可以创建出类似倒影的效果和变换。
CAScrollLayer
CAScrollLayer 提供了和UIScrollView一样的基本功能,但它不能响应用户的触摸和检查滚动范围。即通过直接操作图层边界来实现滑动。CAScrollLayer能控制滚动的范围:kCAScrollNone(滚动禁止)、kCAScrollVertically(垂直允许)、kCAScrollHorizontally(水平允许)、kCAScrollBoth(完全滚动)。
(待补充)
CATiledLayer
CAEmitterLayer
CATextLayer
CAEAGLLayer
AVPlayerLayer
CATransformLayer