@SanMao
2015-08-05T16:33:42.000000Z
字数 1962
阅读 1449
UI
核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍。也就是说,使用少量的代码就可以实现非常强大的功能。后台操作的,不会阻塞主线程。直接作用在CALayer上的,并非UIView

_topView.layer.contentsRect = CGRectMake(0, 0, 1, 0.5);
// 给下面部分添加阴影CAGradientLayer *graLayer = [CAGradientLayer layer];_graLayer = graLayer;// 设置阴影的framegraLayer.frame = _bottomView.bounds;// 设置阴影的颜色graLayer.colors = @[(id)[UIColor clearColor].CGColor, (id)[UIColor blackColor].CGColor];// 程序开始运行的不透明度为0graLayer.opacity = 0;// 设置阴影的渐变方向(取值是0-1)graLayer.startPoint = CGPointMake(0.5, 0);graLayer.endPoint = CGPointMake(0.5, 1);// 设置开始渐变的位置(取值是0-1)graLayer.locations = @[@0.3,@1];[_bottomView.layer addSublayer:graLayer];
// 创建复制层CAReplicatorLayer *repLayer = [CAReplicatorLayer layer];// 复制的份数9份,复制后总共10份repLayer.instanceCount = 20;// 必须设置复制层的尺寸repLayer.frame = self.contentView.bounds;// 相对于上一层的延迟时间repLayer.instanceDelay = 0.3;// 使用此颜色设置会和初始的颜色综合,所以为了此处设置有效应将初始颜色设置为白色repLayer.instanceColor = [UIColor whiteColor].CGColor;// 相对于上一层的位置repLayer.instanceTransform = CATransform3DMakeTranslation(25, 0, 0);// 修改颜色通道repLayer.instanceRedOffset -= 0.1;repLayer.instanceGreenOffset -= 0.1;// repLayer.instanceAlphaOffset -= 0.1;repLayer.instanceBlueOffset -= 0.1;[_contentView.layer addSublayer:repLayer];
// 生成形状图层CAShapeLayer *shapeL = [CAShapeLayer layer];shapeL.path = self.path.CGPath;shapeL.strokeColor = [UIColor redColor].CGColor;// 默认会添加整个路径,如果想要画线,必须清空填充的颜色shapeL.fillColor = [UIColor clearColor].CGColor;// // 设置描边的进度// shapeL.strokeStart = 0;// shapeL.strokeEnd = 0.5;[self.layer addSublayer:shapeL];
修改控件的transform,底层其实是修改frame,而修改frame是不会改变控件的center的在OC中,通过transform属性可以修改对象的平移、缩放比例和旋转角度常用的创建transform结构体方法分两大类
基于控件初始位置的形变CGAffineTransformMakeTranslation(平移)
CGAffineTransformMakeScale(缩放)
CGAffineTransformMakeRotation(旋转)
基于transform参数的形变CGAffineTransformTranslate
CGAffineTransformScale
CGAffineTransformRotate