@SanMao
2015-08-06T00:33:42.000000Z
字数 1962
阅读 1292
UI
核心动画
,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍。也就是说,使用少量的代码就可以实现非常强大的功能。后台操作
的,不会阻塞主线程。直接作用在CALayer上
的,并非UIView
_topView.layer.contentsRect = CGRectMake(0, 0, 1, 0.5);
// 给下面部分添加阴影
CAGradientLayer *graLayer = [CAGradientLayer layer];
_graLayer = graLayer;
// 设置阴影的frame
graLayer.frame = _bottomView.bounds;
// 设置阴影的颜色
graLayer.colors = @[(id)[UIColor clearColor].CGColor, (id)[UIColor blackColor].CGColor];
// 程序开始运行的不透明度为0
graLayer.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