CALayer(二)

1. 圆角ios

CALayer的conrnerRadius属性能够控制图层中角的曲率,值为0的时候是直角,默认状况下这个曲率值只影响背景颜色而不影响背景图片和子视图;如果将maskToBounds设置为YES,图层中的内容就会被截取。算法

左侧图层为设置了maskToBounds为YES,右侧没有设置maskToBounds为YES;性能

2. 图层边框动画

borderWidth边框宽度,borderColor边框颜色;边框是跟随图层的边界变化的,而不是图层里面的内容。rest

左边视图:图片

layer.cornerRadius = 20.0;ci

layer.borderWidth = 5.0;资源

右边视图:it

layer1.cornerRadius = 20.0;io

layer1.borderWidth = 5.0;

layer1.masksToBounds = YES;

3. 阴影

shadowOpacity值在0 - 1.0;

shadowColor阴影颜色;shadowOffset偏移量;shadowRadius半径。

shadowRadius控制着阴影的模糊度,值越大,边界线看上去就会越模糊和天然,

shadowPath:实时计算阴影很是耗费资源,尤为是有多个图层时,如果事先知道阴影是什么形状的,能够经过指定shadowPath来提升性能

方形阴影:

若是是简单的图形,如圆形,方形,椭圆,三角形等一些简单的图形的话,能够用这种方法,可是复杂的图案的话,用贝塞尔曲线(UIBezierPath)会更方便一些。

4. 图层蒙版

当想展现让文字慢慢显示成背景颜色,能够指定一个透明的蒙版来实现,可是不能动态得地生成蒙版;能够经过设置mask属性来解决这个问题,mask图层定义了父图层的部分可见区域。

mask图层中的color属性可有可无,mask图层实心的部分会被保留下来,其余的则会被抛弃。

5. 拉伸过滤

当图片显示不一样大小的时候,会用到拉伸过滤,他做用于原图的像素上并根据须要生成新的像素显示在屏幕上。

CALayer有三种拉伸过滤的方法:

kCAFilterLinear(双线性滤波算法),当放大倍数比较大的时候图片就会模糊不清了;

kCAFilterNearest

kCAFilterTrilinear

minification(缩小图片)和magnification(放大图片)默认的过滤器都是kCAFilterLinear;

kCAFilterTrilinear和kCAFilterLinear很是类似;

kCAFilterNearest:是取样最近的单像素点而无论其余的颜色。这样作很是快,也不会使图片模糊。可是,最明显的效果就是,会使得压缩图片更糟,图片放大以后也显得块状或是马赛克严重。

 

 

ios核心动画高级技巧