有时候打开好友的qq空间会看到很多漂亮的装饰,最常见的就是在页面飘落装饰物(蒲公英、花瓣等等)。作为一个ios程序猿(现在做h5)就会在想这个东西怎么搞的呢?哈哈,接下来就为大家来分享一下ios如何实现飘落的花瓣。。。🌺
说道飘落的效果首先来说一下ios的一个动画-----粒子发射器(CAEmitterLayer)。
CAEmitterLayer用来实现基于Core Animation的粒子发生器系统。每个粒子都是一个CAEmitterCell的实例。粒子绘制在背景色与border之上。CAEmitterLayer作为高性能的粒子引擎,可以被用来创建实时粒子动画如:烟雾,雨等效果(本次来做花瓣飘落效果)。嘻嘻😝
在属性中,可以指定Layer中的CAEmitterCell数组,每个cell定义了自己的一组属性,如速度、粒子发生率、旋转、缩放或者内容。每个粒子也都是一个emitterCell属性,可以作为一个粒子发生器来运作。Layer还可以设置发生器的位置、发生形状、发射单元的位置等。
先来看看qq空间的花瓣效果:

再来看看我们要完成的效果

接下来就开搞----
创建CAEmitterLayer
```
varrect =CGRect(x:0.0, y:-70.0, width:10, height:10.0)//发射位置
rect.origin.x=self.view.center.x
letemitter =CAEmitterLayer()
emitter.frame= rect
view.layer.addSublayer(emitter)//添加到layer层
/*
emitterShape: 发射器的形状
kCAEmitterLayerPoint;//点的形状,粒子从一个点发出
kCAEmitterLayerLine;//线的形状,粒子从一条线发出
kCAEmitterLayerRectangle;//矩形形状,粒子从一个矩形中发
kCAEmitterLayerCuboid;//立方体形状,会影响Z平面的效果
kCAEmitterLayerCircle;//圆形,粒子会在圆形范围发射
kCAEmitterLayerSphere;//球型
*/
emitter.emitterShape=kCAEmitterLayerRectangle
emitter.emitterPosition=CGPoint(x: rect.width/2, y: rect.height/2)//发射器在xy平面的中心位置。
emitter.emitterSize= rect.size//发射器尺寸
```
网友评论