粒子效果
说到粒子效果,iPhone用户应该经常见到的,比如下雨天时天气app中的雨滴效果。还有和小伙聊微信时不小心输入了某些关键字触发了粒子效果,满屏幕的掉表情、红包、元宝什么的。这些很酷炫的动画效果,在iOS中使用起来其实很方便,这都要得益于苹果爸爸一贯封装的便利性。
在图形绘制和动画方面,苹果主要为大家提供了QuartzCore框架。其中基类CALayer下有很多特殊的图层:
CALayer的子类 | 说明 |
---|---|
CATransformlayer | 用于渲染3D Layer层次结构 |
CATiledLayer | 用于管理一副可以分割的大图 |
CATextLayer | 用户绘制AttirbuteString |
CAShapelayer | 用于绘制立体,贝塞尔曲线 |
CAScorllayer | 用于管理可滑动区域 |
CAReplicationLayer | 用于自动复制subLayer |
CAEGLayer | 用于OpenGLES绘制图层 |
CAGradientLayer | 用于控制颜色渐变 |
CAEmitterlayer | 用于控制粒子效果 |
这里粒子效果主要用到两个类:CAEmitterLayer和CAEmitterCell。用起来很简单,基本就是创建后给属性赋值,这里就是个简单的例子:
- (void)viewDidLoad {
[super viewDidLoad];
self.emitterLayer.emitterCells = @[[self emitterCellWithTextureName:@"jinbi"],
[self emitterCellWithTextureName:@"zongzi2.jpg"],
[self emitterCellWithTextureName:@"zongzi"],
[self emitterCellWithTextureName:@"hongbao"]];
}
- (CAEmitterCell *)emitterCellWithTextureName:(NSString *)textureName {
CAEmitterCell *cell = [CAEmitterCell emitterCell];
cell.birthRate = 1.0f;
cell.lifetime = 30.0f;
cell.speed = 2.0f;
cell.velocity = 10.0f;
cell.velocityRange = 10.0f;
cell.yAcceleration = 60.0f;
cell.scale = 0.1f;
cell.scaleRange = 0.0f;
cell.contents = (id)[UIImage imageNamed:textureName].CGImage;
return cell;
}
- (CAEmitterLayer *)emitterLayer {
if (nil == _emitterLayer) {
CAEmitterLayer *emitterLayer = [CAEmitterLayer layer];
emitterLayer.emitterShape = kCAEmitterLayerLine;
emitterLayer.emitterMode = kCAEmitterLayerSurface;
emitterLayer.emitterSize = self.view.bounds.size;
emitterLayer.emitterPosition = CGPointMake(self.view.bounds.size.width * 0.5f, -10.0f);
[self.view.layer addSublayer:emitterLayer];
_emitterLayer = emitterLayer;
}
return _emitterLayer;
}
就这么一点代码,有时间的话,调试调试参数,脑洞大一点就可以做出各种效果。赶快来试试吧!这里就下个红包粽子雨。
红包粽子雨.gif
网友评论