iOS:创建撒花动画
一、介绍
在很多的游戏中,会有这么一个桥段,就是闯关成功后,会弹出一个奖品同时出现很多的鲜花或者笑脸。例如微信中祝福生日时,出现蛋糕等等。那么,这次我就来实现这个功能。
二、实现原理
对外接收一个图片,然后给对应的每一张图片创建CADisplaylink定时器,开启计时器后,在计时器定义的方法中不停的绘制UIImageView,使其从视图顶部下落到顶部后慢慢改变透明度,直至消失。
对外暴露两个方法即可:
(1)开始撒花动画,接收图片参数,开启所有的计时器
(2)结束撒花动画,销毁所有的计时器
三、实现类
FlowFlower(动画):
@interface FlowFlower : NSObject /**
类方法创建对象
@param images 花图片数组
*/
+ (FlowFlower *)flowerFLow:(NSArray *)images; /**
启动落花
@param view 飞行的视图区域
*/
- (void)startFlyFlowerOnView:(UIView *)view; /**
结束落花
*/
- (void)endFlyFlower; @end
UIImage (Extension)扩展,通过颜色绘制图片,同时可以改变图片尺寸:
@interface UIImage (Extension) /** * 按照指定的颜色返回一个图片 * @param color 给定的图片颜色 * @return 图片 */ + (UIImage *)imageWithColor:(UIColor *)color; /** * 按照指定的大小返回一个图片 * @param itemSize 给定的大小 * @param imageName 给定的名称 * @return 图片 */ + (UIImage *)imageWithSize:(CGSize)itemSize imageName:(NSString *)imageName; /** * 利用qurazt2D画图的方法返回旋转后的图片 * @param image 原始图片 * @param orientation 旋转方向 */ + (UIImage *)image:(UIImage *)image rotation:(UIImageOrientation)orientation; /** UIImage:去色功能的实现(图片灰色显示) @param sourceImage 图片 */ + (UIImage *)grayImage:(UIImage *)sourceImage; @end
四、测试
//
// ViewController.m
// FlowFlower
//
// Created by 夏远全 on 2017/3/29.
// Copyright © 2017年 夏远全. All rights reserved.
// #import "ViewController.h"
#import "FlowFlower.h"
#import "UIImage+Extension.h" #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] @interface ViewController ()
@property (strong,nonatomic)FlowFlower *flowFlower;
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; [self FlyFaceImage];
} #pragma mark - 鲜花
-(void)FlyColorImage{ //#FFBF00 #038AE6 #73D0F5 #D93600 #FFFF00 #63DB59 彩片颜色值
UIImage *image1 = [UIImage imageWithColor:UIColorFromRGB(0xFFBF00)];
UIImage *image2 = [UIImage imageWithColor:UIColorFromRGB(0x038AE6)];
UIImage *image3 = [UIImage imageWithColor:UIColorFromRGB(0x73D0F5)];
UIImage *image4 = [UIImage imageWithColor:UIColorFromRGB(0xD93600)];
UIImage *image5 = [UIImage imageWithColor:UIColorFromRGB(0xFFFF00)];
UIImage *image6 = [UIImage imageWithColor:UIColorFromRGB(0x3DB59)]; //飞行
_flowFlower = [FlowFlower flowerFLow:@[image1,image2,image3,image4,image5,image6]];
[_flowFlower startFlyFlowerOnView:self.view];
} #pragma mark - 表情
-(void)FlyFaceImage{ //face
UIImage *faceImage = [UIImage imageNamed:@"face.png"]; //飞行
_flowFlower = [FlowFlower flowerFLow:@[faceImage]];
[_flowFlower startFlyFlowerOnView:self.view];
} @end
五、源码
github:https://github.com/xiayuanquan/FlowFlower
简书: http://www.jianshu.com/p/011c9522cae3
六、演示截图
七、声明
本博文为原创,如转载请注明出处,希望对大家有所帮助~~~~
iOS:创建撒花动画的更多相关文章
- iOS 烟花撒花效果,图层渐变,图层倒影特效。CAEmitterLayer粒子发射器
iOS 烟花撒花效果,图层渐变,图层倒影特效.CAEmitterLayer粒子发射器 上一节我写了一个关于视图图层的相关类,有关CALayer这个类的使用和一些使用方法,详细看这里,就是我们在处理视图 ...
- Android——仿QQ聊天撒花特效
实现这样的效果,你要知道贝塞尔曲线,何谓贝塞尔曲线?其实就是曲线,嘿嘿,关于曲线的概念大家可以去 Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和 ...
- Android特效专辑(六)——仿QQ聊天撒花特效,无形装逼,最为致命
Android特效专辑(六)--仿QQ聊天撒花特效,无形装逼,最为致命 我的关于特效的专辑已经在CSDN上申请了一个专栏--http://blog.csdn.net/column/details/li ...
- iOS 自定义转场动画浅谈
代码地址如下:http://www.demodashi.com/demo/11612.html 路漫漫其修远兮,吾将上下而求索 前记 想研究自定义转场动画很久了,时间就像海绵,挤一挤还是有的,花了差不 ...
- 仿QQ撒花特效--第三方开源--FllowerAnimation
点此下载资源 xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
- 【原】iOS学习44之动画
1. 简单动画 1> UIImageView GIF 动画 GIF图的原理是:获取图片,存储在图片数组中,按照图片数组的顺序将图片以一定的速度播放 UIImageView *showGifima ...
- iOS 开发--转场动画
"用过格瓦拉电影,或者其他app可能都知道,一种点击按钮用放大效果实现转场的动画现在很流行,效果大致如下:" 本文主讲SWIFT版,OC版在后面会留下Demo下载 在iOS中,在同 ...
- IOS开发系列 --- 核心动画
原始地址:http://www.cnblogs.com/kenshincui/p/3972100.html 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥i ...
- Windows Phone 8初学者开发—第22部分:用演示图板创建卷盘的动画
原文 Windows Phone 8初学者开发—第22部分:用演示图板创建卷盘的动画 第22部分: 用演示图板创建卷盘的动画 原文地址:http://channel9.msdn.com/Series/ ...
随机推荐
- SQL-修改表名,列名
sql 1.sql server修改表名.列名 修改表名:EXEC sp_rename ‘原有表名’, '新表名'; 修改列名:EXEC sp_rename ‘表名.[原有列名]’, ‘新列名' , ...
- C++智能指针,指针容器原理及简单实现(auto_ptr,scoped_ptr,ptr_vector).
目录 C++智能指针,指针容器原理及简单实现(auto_ptr,scoped_ptr,ptr_vector). auto_ptr scoped_ptr ptr_vector C++智能指针,指针容器原 ...
- BZOJ3501 : PA2008 Cliquers Strike Back
\[\begin{eqnarray*}ans&=&m^{\sum_{i=1}^n Stirling2(n,i)\bmod 999999598}\bmod 999999599\\& ...
- MySQL 集群
MySQL Galera介绍 主要功能: 同步复制 真正的multi-master,即所有节点可以同时读写数据库 自动的节点成员控制,失效节点自动被清除 新节点加入数据自动复制 真正的并行复制,行级 ...
- GDI 泄漏检测方法
方法一 1.打开电脑的[任务管理器],选择[进程]页,点击菜单项的[查看]项,选择[选择列]: 2.勾选[GDI对象(J)]即可. 3.此时,用户就可以在进程中看到每个进程对应的GDI对象,每个进程的 ...
- hdu 5792 World is Exploding 树状数组
World is Exploding 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5792 Description Given a sequence ...
- 让nginx支持HLS
准备工作: 1.安装nginx和rtmp模块 2.安装ffmepg(用来推流) 以上准备工作参见这篇博客:http://www.cnblogs.com/damiao/p/5231221.html 1. ...
- Xcode6 iOS7模拟器和Xcode7 iOS8模拟器离线下载
Xcode6 只支持iOS7和iOS8的模拟器 Xcode7 只支持iOS9和iOS8的模拟器 Xcode 并不会识别 SDKs 目录下的模拟器,我经过一些尝试以后,发现要放在这个目录下: /Libr ...
- PS小技巧之完美抠图
具体详细步骤如下01.打开图片,ctrl+j复制一层得到图层1,点击红圈处新建图层2,放于图层1与背景层之间,填充你喜欢的颜色,作为检查效果和新的背景图层. 02.点击图层1,用“快速选择工具”大致做 ...
- 解决Android LogCat 输出乱码的问题(转)
Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的. 可以使用adb的logcat 命令来查看系统日志缓冲区的内容,但是在实际操作时,会发现在C ...