iOS 核心动画学习笔记(3)- CALayer的几个属性

1、magnificationFilter=拉伸过滤
Linear双线性滤波算法
Nearest最近过滤, 取样最近的单像素点而不管其他的颜色。这样做非常快,也不会使图片模糊。
Trilinear 三线性滤波算法
对于大图来说, 双线性滤波和三线性滤波表现得更出色
对于没有斜线的小图来说, 最近过滤算法要很多
简单来说, 线性过滤保留了形状, 最近过滤则保留了像素的差异。

2、shouldRasterize=组透明
rasterizationScale,防止Retina屏幕像素化的问题。
UIViewGroupOpacity

3、maskToBounds
maskToBounds属性,沿边界裁剪图形
cornerRadius属性,可以设定一个圆角
mask, mask类似于一个子图层, 相对于父图层(即:拥有该mask属性的那个图层)布局,mask图层定义了父图层的可见区域。
一个layer,当用来当作其他layer的mask属性来用时,他的color属性是没有作用的,他像一个饼干切割机,mask图层实心的部分被保留下来,其他的则被抛弃。
什么样的layer做mask最好呢? CAShapeLayer的contents设为一个图片,有alpha通道的32位图片。 即 layer.contents=xxx.CGImage(image带透明的。)

4,contents, contentsRect, contentsGravity
如果layer.contents = xxx.cgimage
contentsRect 设置原始图片的裁剪区域。
contentsGravity 原始图片显示在这个layer本身的frame下面的显示模式,
是拉伸,
从左边开始,
还是按原始比例缩小到能整好平铺在这个frame上。

5.contentsScale
由于contentsGravity属性, contentsScale支持高分辨率
判断在绘制图层的时候, 应该为寄宿图创建的空间大小 图片的拉伸度。
对应为UIView的属性是contentSaleFactor
contentsScale 1.0, 每个点1个像素绘制图片
2.0, 每个点 2个像素绘制图片。
一定要手动设置图层的contenstScale属性, 否则, retina设备上就显示不正确。

6, 理解像素和点的区别

7, contentsCenter
对应为UIImage里的resizeableImageWithCapInsets方法
默认值是0,0,1,1
contentsCenter/contentsGravity配合使用
interface builder 的属性stretching对应contentsCenter

8, drawRect
drawLayer:inContext:

9,阴影
shadowRadius 模糊度
shadowOffset 阴影的方向和距离, iOS更倾向于宽度设为0,高度设为正值
shadowOpacity 0-1.0的浮点数,大于0 显示在任意图层之下
shadowColor阴影的颜色
maskToBounds阴影裁剪
shadowPath 实时计算阴影非常消耗资源,尤其是图层有多个字图层,而且每个图层又一个透明效果的寄宿图的时候。
如果实现知道阴影的形状, 则可以提制定一个shadowPath来提高性能。
shadowPath,指定一个矢量图形, 可以独立于图层形状之外指定阴影的形状

10,图层蒙板
mask mask图层定义了父图层的可见区域
maskLayer frame

你可能感兴趣的:(iOS 核心动画学习笔记(3)- CALayer的几个属性)