iOS CoreAnimation-粒子动画

一、粒子发射器

iOS中的粒子效果有两部分组成,一部分为发射器,设置例子发射的宏观属性,另一部分是粒子单元,用于设置相应的粒子属性。粒子发射器是基于Layer层:CAEmitterLayer。其中常用的属性如下:

@interface CAEmitterLayer : CALayer
//粒子单元数组
@property (nullable, copy) NSArray<CAEmitterCell *> *emitterCells;
//粒子产生速率,1/S,结果会是粒子的速率 乘 发射器速率
@property float birthRate;
//粒子存活时间,1/S,结果会是粒子的存活时间 乘 发射器的粒子存活时间
@property float lifetime;
//粒子发射器在XY平面的中心位置
@property CGPoint emitterPosition;
//粒子发射器在Z平面的位置
@property CGFloat emitterZPosition;
//粒子发射器的在XY平面的尺寸
@property CGSize emitterSize;
//粒子发射器在Z平面的深度
@property CGFloat emitterDepth;
/*
 * kCAEmitterLayerPoint 点
 * kCAEmitterLayerLine 线
 * kCAEmitterLayerRectangle 长方形
 * kCAEmitterLayerCuboid 立方体
 * kCAEmitterLayerCircle 圆形
 * kCAEmitterLayerSphere 球形
 */
@property (copy) NSString* emitterShape;
/*
 * kCAEmitterLayerPoints 点状
 * kCAEmitterLayerOutline 边缘
 * kCAEmitterLayerSurface 表面
 * kCAEmitterLayerVolume 体积
 */
@property (copy) NSString* emitterMode;
/*
 * kCAEmitterLayerUnordered 粒子是无序出现的,多个发射源将混合
 * kCAEmitterLayerOldestFirst 声明久的粒子会被渲染在最上层
 * kCAEmitterLayerOldestLast 年轻的粒子会被渲染在最上层
 * kCAEmitterLayerBackToFront 粒子的渲染按照Z轴的前后顺序进行
 * kCAEmitterLayerAdditive 粒子混合
 */
@property (copy) NSString* renderMode;
//是否开启三维空间效果
@property BOOL preservesDepth;
//粒子运动速度,默认值为1
@property float velocity;
//粒子的大小,默认值为1
@property float scale;
//粒子的旋转度,默认值为1
@property float spin;
//粒子产生的随机种子
@property unsigned int seed;
@end

二、粒子单元

@interface CAEmitterCell : NSObject
//粒子单元名称
@property(nullable, copy) NSString* name;
//是否允许发射器渲染,默认是YES
@property(getter=isEnabled) BOOL enabled;
//粒子的创建速率
@property float birthRate;
//粒子存在时间
@property float lifetime;
//粒子存在时间容差
@property float lifetimeRange;
//粒子在Z轴方向的发射角度
@property CGFloat emissionLatitude;
//粒子在XY平面的发射角度
@property CGFloat emissionLongitude;
//粒子发射角度容差
@property CGFloat emissionRange;
//粒子运动速率
@property CGFloat velocity;
//粒子运动速率容差
@property CGFloat velocityRange;
//粒子在x轴方向的加速度
@property CGFloat xAcceleration;
//粒子在y轴方向的加速度
@property CGFloat yAcceleration;
//粒子在z轴方向的加速度
@property CGFloat zAcceleration;
//粒子缩放大小
@property CGFloat scale;
//粒子尺寸容差
@property CGFloat scaleRange;
//粒子缩放速率
@property CGFloat scaleSpeed;
//粒子旋转度
@property CGFloat spin;
//粒子旋转容差
@property CGFloat spinRange;
//粒子的颜色
@property CGColorRef color;
//粒子在rgba上的容差
@property float redRange;
@property float greenRange;
@property float blueRange;
@property float alphaRange;
//粒子在rgba上变化的速率
@property float redSpeed;
@property float greenSpeed;
@property float blueSpeed;
@property float alphaSpeed;
//渲染粒子内容,可以设置为CGImage的对象
@property(nullable, strong) id contents;
//渲染粒子的范围
@property CGRect contentsRect;
//渲染粒子的缩放
@property CGFloat contentsScale;
//子粒子单元,若不是nil,则当前的粒子单元会最为子粒子单元的粒子发射器
@property(nullable, copy) NSArray<CAEmitterCell *> *emitterCells;
@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值