layer

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值