1.赋值图层
在使用复制图层的时候,必须重写layerClass,把原有的CALayer 修改成 CAReplicatorLayer
//创建重写后 可以复制的图层
CanReplicatorLayer *view= [[CanReplicatorLayer alloc]initWithFrame:
CGRectMake(0, 100, 300, 300)];
[self.view addSubview:view];
self.view.backgroundColor =[UIColor whiteColor];
UIImageView *imageView =[[UIImageView alloc]initWithFrame:
CGRectMake(0, 100, 300, 300)];
imageView.contentMode =UIViewContentModeScaleAspectFit;
imageView.image =[UIImage imageNamed:@"H4"];
[view addSubview:imageView];
//复制图层
CAReplicatorLayer *layer = (CAReplicatorLayer *)view.layer;
//instance 复制之后,有原来的图层 有新的图层,这是现在实例化出来的layer的数量
layer.instanceCount = 2;//复制出来一份
//改变复制图层的样式
CATransform3D tansFrom = CATransform3DMakeTranslation(0, 80, 0);
layer.instanceTransform = CATransform3DRotate(tansFrom,180*M_PI/180, 1, 0, 0);
//设置复制图层 颜色偏移量
layer.instanceRedOffset =-0.2;
layer.instanceBlueOffset = -0.3;
layer.instanceGreenOffset =-0.4;
2. 渐变图层
CAGradientLayer
colors:渐变颜色的数组 必须是CGColor类型
locations: 颜色渐变的百分比 数组
startPoint: 颜色渐变的起始点
endPoint:颜色渐变的终点 颜色会根据设置的起始点和终点去变化
self.view.backgroundColor =[UIColor whiteColor];
UIImageView *imageView =[[UIImageView alloc]initWithFrame:self.view.frame];
imageView.contentMode =UIViewContentModeScaleAspectFit;
imageView.image =[UIImage imageNamed:@"H4"];
[self.view addSubview:imageView];
//初始化渐变 图层
CAGradientLayer *layer =[CAGradientLayer layer];
layer.frame =self.view.frame;
//设置渐变的颜色数组
layer.colors =@[(id)[UIColor redColor].CGColor,
(id)[UIColor orangeColor].CGColor,
(id)[UIColor yellowColor].CGColor,
(id)[UIColor greenColor].CGColor,
(id)[UIColor cyanColor].CGColor,
(id)[UIColor blueColor].CGColor,
(id)[UIColor purpleColor].CGColor];
//设置透明度
layer.opacity =0.2;
//设置起始点
layer.startPoint = CGPointMake(0, 0);
//设置
layer.locations =@[@0.1,@0.2,@0.3];
[self.view.layer addSublayer:layer];
3.粒子发送器图层
CAEmitterLayer:发送器
birthRate:每秒发送粒子数量
emitterMode :发送的样式
kCAEmitterLayerPoints:点
kCAEmitterLayerOutline:线
kCAEmitterLayerSurface:面
kCAEmitterLayerVolume:团
kCAEmitterLayerRectangle 矩形
kCAEmitterLayerCuboid 立方体
kCAEmitterLayerCircle 曲线
kCAEmitterLayerSphere 圆形
renderMode渲染样式
kCAEmitterLayerOldestFirst 最后的出生的粒子 在第一个
kCAEmitterLayerOldestLast 最后的出生的粒子 在最后面
kCAEmitterLayerBackToFront 把后面的 放到上面
kCAEmitterLayerAdditive 叠加
kCAEmitterLayerOldestFirst 最后的出生的粒子 在第一个
kCAEmitterLayerOldestLast 最后的出生的粒子 在最后面
kCAEmitterLayerBackToFront 把后面的 放到上面
kCAEmitterLayerAdditive 叠加
emitterCells:在粒子发送器上面 添加粒子
CAEmitterCell:粒子
contents:粒子的内容
lifetime:存活时间
lifetimeRange:存活时间范围
birthRate:每秒粒子生成的数量
emissionLatitude:散发的纬度(方向) 纬度表示 上下
emissionLongitude:散发的经度(方向) 经度表示左右
velocity :发送的速度(速度越快,越远)
velocityRange:发送的速度范围
xAcceleration:X轴加速度
yAcceleration:y轴加速度
zAcceleration:z轴加速度
emissionRange:散发的范围 弧度
name:可以通过名字 找到粒子
- (void)viewDidLoad {
[super viewDidLoad];
//初始化粒子发送器
//self.emitterLayer.frame = CGRectMake(0, 300, 100,400);
// 设置粒子发送器 每秒钟发送的数量
self.emitterLayer.birthRate = 1;
//设置粒子的中心点
//self.emitterLayer.position = CGPointMake(0, 0);
// 设置粒子发送器的样式
self.emitterLayer.renderMode = kCAEmitterLayerBackToFront;
//设置粒子的中心店
self.emitterLayer.emitterPosition =self.view.center;
//初始化粒子
CAEmitterCell *cell = [CAEmitterCell emitterCell];
cell.contents = (id)[UIImage imageNamed:@"H3"].CGImage;
//粒子的出生量
cell.birthRate = 10;
//粒子的存活时间,默认是0,单位是秒
cell.lifetime = 10;
cell.lifetimeRange =11;
//粒子发送的速度,默认是0
cell.velocity = 100;
cell.velocityRange= 10;
//设置粒子发送的 方向
cell.emissionLongitude = 30*M_PI/180;
cell.emissionLatitude = M_PI/180;
//设置粒子散发的范围 弧度
cell.emissionRange = 180*M_PI/180;
//设置粒子的加速度
cell.yAcceleration = -100;
// 把粒子的cell 放到粒子发送器上
self.emitterLayer.emitterCells = @[cell];
}
-(CAEmitterLayer *)emitterLayer{
if (_emitterLayer) {
return _emitterLayer;
}
_emitterLayer =[CAEmitterLayer layer];
[self.view.layer addSublayer:_emitterLayer];
return _emitterLayer;
}