CAGradientLayer
处理颜色的渐变
属性
属性 | 意义 |
---|---|
NSArray *colors | 渐变颜色的数组 |
NSArray *locations | 渐变颜色的区间分布,locations的数组长度和color一致,这个值一般不用管它,默认是nil,会平均分布,取值在0到1之间 |
startPoint | 映射locations中第一个位置,用单位向量表示,比如(0,0)表示从左上角开始变化。默认值是(0.5,0.0) |
endPoint | 映射locations中最后一个位置,用单位向量表示,比如(1,1)表示到右下角变化结束。默认值是(0.5,1.0) |
NSString *type | 默认值是kCAGradientLayerAxial,表示按像素均匀变化。除了默认值也无其它选项 |
CAShapeLayer
CAShapeLayer属于QuartzCore框架,继承自CALayer。CAShapeLayer是在坐标系内绘制贝塞尔曲线的,通过绘制贝塞尔曲线,设置shape(形状)的path(路径),从而绘制各种各样的图形以及不规则图形。因此,使用CAShapeLayer需要与UIBezierPath一起使用。
UIBezierPath类允许你在自定义的 View 中绘制和渲染由直线和曲线组成的路径.。你可以在初始化的时候直接为你的UIBezierPath指定一个几何图形。
通俗点就是UIBezierPath用来指定绘制图形路径,而CAShapeLayer就是根据路径来绘图的。
属性
属性 | 意义 |
---|---|
CGPathRef path; | 呈现的形状的路径,如果路径延伸到layer的bounds之外,它不会自动被剪辑到该层,只有当正常的图层隐藏规则时,才会显示。————注意:该属性可动画,但当属性更改时,不会创建隐式动画。 |
CGColorRef fillColor; | 填充路径的颜色,或不需要填充。默认颜色为不透明的黑色。——注意:在有UIBezierPath参数配置的情况下才能发生作用 |
NSString *fillRule; | 当在填充颜色的时候则就需要这种填充规则,值有两种,非零和奇偶数,但默认是非零值。 |
CGColorRef strokeColor; | 设置描边色,默认无色。——注意:在有UIBezierPath参数配置的情况下才能发生作用 |
CGFloat strokeStart; CGFloat strokeEnd; | 用于绘制边线轮廓路径的子区域。该值必须在[0,1]范围,0代表路径的开始,1代表路径的结束。在0和1之间的值沿路径长度进行线性插值。strokestart默认为0,strokeend默认为1。 |
CGFloat lineWidth; | 线的宽度,默认为1 |
CGFloat strokeStart; CGFloat strokeEnd; | 最大斜接长度。斜接长度指的是在两条线交汇处和外交之间的距离。只有lineJoin属性为kCALineJoinMiter时miterLimit才有效。边角的角度越小,斜接长度就会越大。为了避免斜接长度过长,我们可以使用miterLimit属性。如果斜接长度超过miterLimit的值,边角会以lineJoin的“bevel”即kCALineJoinBevel类型来显示。 |
NSString *lineCap; | 线端点类型,值有三个类型,分别为kCALineCapButt 、kCALineCapRound 、kCALineCapSquare,默认值为Butt |
NSString *lineJoin; | 线连接类型,其值也有三个类型,分别为kCALineJoinMiter、kCALineJoinRound、kCALineJoinBevel,默认值是Miter |
CGFloat lineDashPhase; | 线型模版的起始位置 |
NSArray *lineDashPattern; | 线性模版,这是一个NSNumber的数组,索引从1开始记,奇数位数值表示实线长度,偶数位数值表示空白长度。 |
参考 —— [ iOS 动画合集]