CALayer子类CAEmitterLayer的简单使用

一、CAEmitterLayer实现基于Core Animation的粒子发生器系统。每个粒子都是一个CAEmitterCell的实例
二、实例:
1、定义一个发射源 UIView :

@property (weak, nonatomic) IBOutlet UIView *containerView;

2、创建CAEmitterLayer

    CAEmitterLayer *emitterLayer = [CAEmitterLayer layer];

    emitterLayer.frame = self.containerView.bounds;

    [self.containerView.layer addSublayer:emitterLayer];

    //渲染模式

    /**

     *  CA_EXTERN NSString * const kCAEmitterLayerUnordered

     __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);

     CA_EXTERN NSString * const kCAEmitterLayerOldestFirst

     __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);

     CA_EXTERN NSString * const kCAEmitterLayerOldestLast

     __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);

     CA_EXTERN NSString * const kCAEmitterLayerBackToFront

     __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);

     CA_EXTERN NSString * const kCAEmitterLayerAdditive

     __OSX_AVAILABLE_STARTING (__MAC_10_6, __IPHONE_5_0);


     */

    

    

    emitterLayer.renderMode = kCAEmitterLayerAdditive;

    //发射源大小

//    emitterLayer.emitterSize= CGSizeMake(<#CGFloat width#>, <#CGFloat height#>);

    //发射位置

    emitterLayer.emitterPosition = CGPointMake(emitterLayer.frame.size.width / 2.0, emitterLayer.frame.size.height / 2.0);


3、创建CAEmitterCell

    CAEmitterCell *cell = [[CAEmitterCell alloc] init];

    cell.contents = (__bridge id _Nullable)([UIImage imageNamed:@"star.jpg"].CGImage);//粒子要展现的图片

    

    //应该画在contents里的子rectangle

//    cell.contentsRect = 

    

    cell.birthRate = 150;//粒子产生系数 默认1.0,粒子参数的速度成绩印子,每秒发射的粒子数量

    cell.lifetime = 5.0;//粒子的生命周期

    cell.color = [UIColor colorWithRed:1 green:0.5 blue:0.1 alpha:1.0].CGColor;//粒子颜色为桔色

    cell.alphaSpeed = -0.4;//透明度每过一秒减少0.4,粒子透明度在生命周期内的改变速度

    cell.velocity = 50;

    cell.velocityRange = 50;

    cell.emissionRange = M_PI * 2.0;

    

    //发射z轴方向的角度

//    cell.emissionLatitude = 

    

    //粒子blue在生命周期内的改变速度

//    cell.blueRange = 

    

    //一个粒子的颜色blue能改变的范围

//    cell.blueRange = 

    

    //一个粒子的颜色alpha能改变的范围

//    cell.alphaRange

    

    //粒子的缩放比例

//    cell.scale

    

    //粒子是平展在层上

//    emitterLayer.preservesDepth =

    

    //用于初始化随机数产生的种子

//    emitterLayer.seed

    

    //自旋转速度

//    emitterLayer.spin

    

    emitterLayer.emitterCells = @[cell];//装着CAEmitterCell对象的数组,被用于把粒子投放到layer上

    

    //决定粒子形状的深度联系:emitter shape

//    emitterLayer.emitterDepth =

    //发射源的z坐标位置

//    emitterLayer.emitterZPosition=


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值