在使用微信的過程中,當我們發送了某些特殊字符串時,可能會出現令你意外的效果,比如輸入‘生日快樂’會有蛋糕飄落,那么這樣的效果是如何實現的呢?在iOS 5中,蘋果引入了一個新的CALayer子類叫做CAEmitterLayer。這是一個高性能的粒子引擎,被用來創建實時例子動畫如:煙霧,火,雨等等這些效果。今天我們先來實現飄落效果:
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.
}