首页 > 代码库 > CALayer(二)

CALayer(二)

1. 圆角

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

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

技术分享

2. 图层边框

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

左边视图:

layer.cornerRadius = 20.0;

layer.borderWidth = 5.0;

右边视图:

layer1.cornerRadius = 20.0;

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核心动画高级技巧

 

CALayer(二)