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