最近打开QQ的空间会有灯笼掉落下来,操作背后的控件不受影响,自己想实现这样一个类似的功能,查阅了一下资料,有一个CAEmitterLayer的东东。
以下是CAEmitterLayer的主要属性
contents = (__bridge id)[UIImage imageNamed:@"snow.jpg"].CGImage;
birthRate = 100;//表示粒子的生产速度,值越大,生产的速度越大
lifetime = 10.0 ;//表示粒子的生命周期,在该范围内,粒子不会消失
alphaSpeed = 0;//粒子透明度的变化速度,为负值时说明透明度慢慢变低
velocity = 150;//表示粒子的位移加速度
velocityRange = 100;//表示粒子的位移加速范围 与上一个参数配合使用
emissionLongitude = M_PI/2;//粒子发射中心方向
emissionRange = M_PI/2;//粒子发射范围
scale = 0.25;//大小
以下是主要代码
CAEmitterLayer *emitter = [CAEmitterLayer layer];
emitter.frame = self.view.bounds;
[self.view.layer addSublayer:emitter];
emitter.renderMode = kCAEmitterLayerAdditive;
emitter.emitterPosition = CGPointMake(emitter.frame.size.width/2.0, -200);
CAEmitterCell *cell = [[CAEmitterCell alloc] init];
cell.contents = (__bridge id)[UIImage imageNamed:@"snow.jpg"].CGImage;
cell.birthRate = 100;//表示粒子的生产速度,值越大,生产的速度越大
cell.lifetime = 10.0 ;//表示粒子的生命周期,在该范围内,粒子不会消失
cell.alphaSpeed = 0;//粒子透明度的变化速度,为负值时说明透明度慢慢变低
cell.velocity = 150;//表示粒子的位移加速度
cell.velocityRange = 100;//表示粒子的位移加速范围 与上一个参数配合使用
cell.emissionLongitude = M_PI/2;//粒子发射中心方向
cell.emissionRange = M_PI/2;//粒子发射范围
cell.scale = 0.25;
emitter.emitterCells = @[cell];
CAEmitterLayer还可以实现放烟花效果