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