iOS_使用CAEmitterLayer实现仿微信飘落效果

在使用微信的过程中,当我们发送了某些特殊字符串时,可能会出现令你意外的效果,比如输入‘生日快乐’会有蛋糕飘落,那么这样的效果是如何实现的呢?在iOS 5中,苹果引入了一个新的CALayer子类叫做CAEmitterLayer。这是一个高性能的粒子引擎,被用来创建实时例子动画如:烟雾,火,雨等等这些效果。今天我们先来实现飘落效果:
iOS_使用CAEmitterLayer实现仿微信飘落效果_第1张图片
CoderDoctorLee.gif

代码的实现:

#pragma mark -- 粒子引擎动画方法之飘落效果
- (void)getAnimation
{
    //创建一个CAEmitterLayer
    CAEmitterLayer *snowEmitter = [CAEmitterLayer layer];
    //降落区域的方位
    snowEmitter.frame = self.view.bounds;
    //添加到父视图Layer上
    [self.view.layer addSublayer:snowEmitter];
    //指定发射源的位置
    snowEmitter.emitterPosition = CGPointMake(self.view.bounds.size.width / 2.0, -10);
    //指定发射源的大小
    snowEmitter.emitterSize  = CGSizeMake(self.view.bounds.size.width, 0.0);
    //指定发射源的形状和模式
    snowEmitter.emitterShape = kCAEmitterLayerLine;
    snowEmitter.emitterMode  = kCAEmitterLayerOutline;
    //创建CAEmitterCell
    CAEmitterCell *snowflake = [CAEmitterCell emitterCell];
    //每秒多少个
    snowflake.birthRate = 3.0;
    //存活时间
    snowflake.lifetime = 50.0;
    //初速度,因为动画属于落体效果,所以我们只需要设置它在y方向上的加速度就行了。
    snowflake.velocity = 10;
    //初速度范围
    snowflake.velocityRange = 5;
    //y轴方向的加速度
    snowflake.yAcceleration = 30;
    //以锥形分布开的发射角度。角度用弧度制。粒子均匀分布在这个锥形范围内。
    snowflake.emissionRange = 5;
    //设置降落的图片
    snowflake.contents  = (id) [[UIImage imageNamed:@"2"] CGImage];
    //图片缩放比例
    snowflake.scale = 0.5;
    //开始动画
    snowEmitter.emitterCells = [NSArray arrayWithObject:snowflake];
}
接下来在想实现这个效果的位置调用方法即可:
- (void)viewDidLoad {
    [super viewDidLoad];
    [self getAnimation];
    // Do any additional setup after loading the view, typically from a nib.
}

你可能感兴趣的:(iOS_使用CAEmitterLayer实现仿微信飘落效果)