ios实现qq空间飘落的花瓣(swift—粒子发射器)
来源:互联网 发布:淘宝哪家卖苹果手机好 编辑:程序博客网 时间:2024/05/20 05:55
ios实现qq空间飘落的花瓣(swift—粒子发射器)
有时候打开好友的qq空间会看到很多漂亮的装饰,最常见的就是在页面飘落装饰物(蒲公英、花瓣等等)。作为一个ios程序猿(现在做h5)就会在想这个东西怎么搞的呢?哈哈,接下来就为大家来分享一下ios如何实现飘落的花瓣。。。��
说到飘落的效果首先来说一下ios的一个动画—–粒子发射器(CAEmitterLayer)。
CAEmitterLayer用来实现基于Core Animation的粒子发生器系统。每个粒子都是一个CAEmitterCell的实例。粒子绘制在背景色与border之上。CAEmitterLayer作为高性能的粒子引擎,可以被用来创建实时粒子动画如:烟雾,雨等效果(本次来做花瓣飘落效果)。嘻嘻��
在属性中,可以指定Layer中的CAEmitterCell数组,每个cell定义了自己的一组属性,如速度、粒子发生率、旋转、缩放或者内容。每个粒子也都是一个emitterCell属性,可以作为一个粒子发生器来运作。Layer还可以设置发生器的位置、发生形状、发射单元的位置等。
先来看看qq空间的花瓣效果:
再来看看我们要完成的效果:
有没有很漂亮(快夸夸我。。。)
接下来就开搞,直接上代码:说明全在注释里—
//创建粒子发射器var rect = CGRect(x: 0.0, y: -70.0, width: 10, height: 10.0) //发射位置rect.origin.x = self.view.center.xlet emitter = CAEmitterLayer()emitter.frame = rectview.layer.addSublayer(emitter) //添加到layer层/* emitterShape: 发射器的形状 kCAEmitterLayerPoint;//点的形状,粒子从一个点发出 kCAEmitterLayerLine;//线的形状,粒子从一条线发出 kCAEmitterLayerRectangle;//矩形形状,粒子从一个矩形中发 kCAEmitterLayerCuboid;//立方体形状,会影响Z平面的效果 kCAEmitterLayerCircle;//圆形,粒子会在圆形范围发射 kCAEmitterLayerSphere;//球型 */emitter.emitterShape = kCAEmitterLayerRectangleemitter.emitterPosition = CGPoint(x: rect.width/2, y: rect.height/2) //发射器在xy平面的中心位置。emitter.emitterSize = rect.size //发射器尺寸
创建好粒子发射器,该设置我们的粒子的属性
//创建粒子0let emitterCell = CAEmitterCell()emitterCell.contents = UIImage(named: "huaban")?.cgImage // 花瓣图片emitterCell.birthRate = 3 // 每秒产生花瓣的数量emitterCell.lifetime = 10 // 花瓣的存活时间emitterCell.yAcceleration = 30.0 // y轴上的加速度emitterCell.xAcceleration = 5.0 //x轴上的加速度emitterCell.velocity = 15.0 //初始速度emitterCell.emissionLongitude = CGFloat(-Double.pi) //向左emitterCell.velocityRange = 200.0 //速度范围emitterCell.emissionRange = CGFloat(Double.pi/2) //周围发射角度emitterCell.spin = 1 //粒子旋转速度emitterCell.alphaRange = 0.3 //粒子透明度能改变的范围
最后将创建的粒子放到粒子发射器中
emitter.emitterCells = [emitterCell] //这里可以设置多种粒子 我们以一种粒子
到了这一步,我们的粒子发射器就完成了,再配上我们的美美哒背景图片并隐藏状态栏
func creatUI() { let backgroundImgView = UIImageView() backgroundImgView.image = UIImage(named: "img5.jpeg") backgroundImgView.frame = self.view.frame self.view.addSubview(backgroundImgView)}//隐藏状态栏override var prefersStatusBarHidden: Bool { get { return true }}
哈哈哈,有没有觉得很简单呢!粒子发射器这个功能就在那里,就看我们的脑洞怎么去发掘它的能力了。
最后附上完整代码地址:github —-记得点星星
代码有bug欢迎在评论或者github中指出
阅读全文
1 0
- ios实现qq空间飘落的花瓣(swift—粒子发射器)
- iOS CAEmitterLayer 粒子发射器的使用详解
- iOS 使用核心动画加粒子发射器实现的点赞按钮
- iOS-利用粒子发射器(CAEmitterLayer) 制作发射动画
- Cocos2D粒子发射器的纹理
- 学习练习--IOS雪花飘落的实现方法
- IOS粒子系统的实现
- iOS开发:“分享到QQ空间”的实现方法?
- Unity粒子系统参数解析(二)(发射器)
- Andengine粒子发射器学习总结
- 如何制作网格粒子发射器
- ios 美元飘落效果的demo
- qq消息发射器
- 图片较多的网站,如淘宝京东、美丽说花瓣、QQ空间、百度图片等都采用哪些技术优化图片展示?
- Swift - 腾讯官方SDK的配置及使用(分享到QQ空间、分享到好友)
- iOS 烟花撒花效果,图层渐变,图层倒影特效。CAEmitterLayer粒子发射器
- 水点蒸发变做白云,花瓣飘落下游生根
- JS实现飘落的雪花效果
- Java实现阿里云的域名解析动态的IP
- 【C#】观察者模式案例
- 利用array_diff去除两个数组重复值
- 第十三周 【项目3
- Android7.0相机图册图片剪切封装
- ios实现qq空间飘落的花瓣(swift—粒子发射器)
- 省份-城市-区/县 下拉选
- 【十八掌●武功篇】第八掌:HBase之Shell
- Leetcode_189 Rotate Array
- Centos7及以下版本防火墙的打开关闭和查看开放端口
- Oracle的连接详解(左连接、右连接、全连接...)
- 第十二周——项目一最短路径(3)Dijkstra算法的验证(从一个顶点到其余各顶点的最短路径)
- 支付宝的服务器端的开发流程
- 【第十一周】项目4