转载:http://blog.csdn.net/wang631106979/article/details/51258020
基于CAEmitterLayer做的点赞效果图:
CAEmitterCell: CAEmitterCell是粒子发射系统里的粒子,用CAEmitterCell来定义你所需要的粒子的样式,图片,颜色,方向,运动,缩放比例和生命周期等等。
属性列表
属性名作用
alphaRange一个粒子的颜色alpha能改变的范围
alphaSpeed粒子透明度在生命周期内的改变速度
birthrate每秒发射的粒子数量
blueRange一个粒子的颜色blue 能改变的范围
blueSpeed粒子blue在生命周期内的改变速度
color粒子的颜色
contents是个CGImageRef的对象,既粒子要展现的图片
contentsRect应该画在contents里的子rectangle
emissionLatitude发射的z轴方向的角度
emissionLongitudex-y平面的发射方向
emissionRange周围发射角度
emitterCells粒子发射的粒子的数组
enabled粒子是否被渲染
greenrange一个粒子的颜色green 能改变的范围
greenSpeed粒子green在生命周期内的改变速度
lifetime生命周期
lifetimeRange生命周期范围 lifetime= lifetime(+/-) lifetimeRange
magnificationFilter增加自己的大小
minificatonFilter减小自己的大小
minificationFilterBias减小大小的因子
name粒子的名字
redRange一个粒子的颜色red 能改变的范围
redSpeed粒子red在生命周期内的改变速度
scale缩放比例
scaleRange缩放比例范围
scaleSpeed缩放比例速度
spin子旋转角度
spinrange子旋转角度范围
velocity速度
velocityRange速度范围
xAcceleration粒子x方向的加速度分量
yAcceleration粒子y方向的加速度分量
zAcceleration粒子z方向的加速度分量
- 代码示例
let explosionCell = CAEmitterCell()explosionCell.name="explosion"explosionCell.alphaRange=0.10explosionCell.alphaSpeed= -1.0explosionCell.lifetime=0.7explosionCell.lifetimeRange=0.3explosionCell.birthRate=0explosionCell.velocity=40.00explosionCell.velocityRange=10.00explosionCell.scale=0.03explosionCell.scaleRange=0.02explosionCell.contents= UIImage(named:"Sparkle")?.CGImage
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
CAEmitterLayer:CAEmitterLayer类提供了一个粒子发射器系统为核心的动画。这些粒子是由CAEmitterCell组成的实例,它相当于一个管理者,来管理 CAEmitterCell的发射的一些细节,比如发射的位置,发射形状等等。
属性列表
属性名做用
emitterPosition发射位置
emitterSize发射源的大小
emitterMode发射模式
emitterShape发射源的形状
renderMode渲染模式
birthRate粒子产生系数,默认1.0
emitterCells装着CAEmitterCell对象的数组,被用于把粒子投放到layer上
emitterDepth决定粒子形状的深度联系
emitterZposition发射源的z坐标位置
lifetime粒子生命周期
scale粒子的缩放比例
seed用于初始化随机数产生的种子
spin自旋转速度
velocity粒子速度
代码示例
explosionLayer = CAEmitterLayer()explosionLayer.name="emitterLayer"explosionLayer.emitterShape= kCAEmitterLayerCircle;explosionLayer.emitterMode= kCAEmitterLayerOutline;explosionLayer.emitterSize= CGSizeMake(10,0);explosionLayer.emitterCells= [explosionCell]explosionLayer.renderMode= kCAEmitterLayerOldestFirst;explosionLayer.masksToBounds= falseexplosionLayer.position= CGPointMake(self.frame.size.width/2.0, self.frame.size.height/2.0);explosionLayer.zPosition= -1;layer.addSublayer(explosionLayer)