1. 首页
  2. iOS开发
  3. iOS动画之-花瓣飘落

iOS动画之-花瓣飘落

iOS中有许多动画,本文我们就来为大家介绍CAEmitterLayer,CAEmitterLayer提供了粒子系统的核心动画,基于它可以实现雪花,烟花,火焰,爱心等效果,本文就为大家介绍一下“花满天”...

iOS中有许多动画,本文我们就来为大家介绍CAEmitterLayerCAEmitterLayer提供了粒子系统的核心动画,基于它可以实现雪花烟花火焰爱心等效果,本文就为大家介绍一下“花满天”的效果吧。首先看下效果图哈

H.gif iOS动画之-花瓣飘落 iOS开发


看了效果图,是不是很漂亮啊,我们就开始实现这个效果吧。这个效果是基于CAEmitterLayer。项目所需要的素材下载地址在文章下面哦。

直接在ViewController.m中上如下代码


  1. - (void)viewDidLoad {
  2.     [super viewDidLoad];
  3.     //调用此方法
  4.     [self createImageOfSkyFlower];
  5. }
  6. //隐藏手机状态栏
  7. -(BOOL)prefersStatusBarHidden
  8. {
  9.     return YES;
  10. }
  11.  
  12. - (void)createImageOfSkyFlower{
  13.     //背景图
  14.     UIImageView *backgroundView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
  15.     backgroundView.image = [UIImage imageNamed:@"1.jpg"];
  16.     backgroundView.contentMode = UIViewContentModeScaleAspectFill;
  17.     [self.view addSubview:backgroundView];
  18.     //花瓣飘落
  19.     CAEmitterLayer *flowerLayer = [CAEmitterLayer layer];
  20.     flowerLayer.emitterPosition = CGPointMake(100, -30);
  21.     flowerLayer.emitterSize = CGSizeMake(self.view.bounds.size.width * 2   , 0);
  22.     flowerLayer.emitterMode = kCAEmitterLayerOutline;
  23.     flowerLayer.emitterShape = kCAEmitterLayerLine;
  24.     CAEmitterCell *flowerCell = [CAEmitterCell emitterCell];
  25.     flowerCell.contents = (__bridge id)[UIImage imageNamed:@"3"].CGImage;
  26.     //花瓣缩放比例
  27.     flowerCell.scale = 0.02;
  28.     flowerCell.scaleRange = 0.5;
  29.     //每秒产生的花瓣数目
  30.     flowerCell.birthRate = 12;
  31.     flowerCell.lifetime = 100;
  32.     //花瓣变透明的速度
  33.     flowerCell.alphaSpeed = -0.0001;
  34.     //秒速“五”厘米
  35.     flowerCell.velocity = 40;
  36.     flowerCell.velocityRange = 60;
  37.     //花瓣掉落的角落范围
  38.     flowerCell.emissionRange = M_PI;
  39.     //花瓣旋转的速度
  40.     flowerCell.spin = M_PI_4;
  41.     //阴影的不透明度
  42.     flowerLayer.shadowOpacity = 1;
  43.     //阴影化开的程度
  44.     flowerLayer.shadowRadius = 12;
  45.     //阴影的偏移量
  46.     flowerLayer.shadowOffset = CGSizeMake(6, 6);
  47.     //阴影的颜色
  48.     flowerLayer.shadowColor = [[UIColor whiteColor] CGColor];
  49.     flowerLayer.emitterCells = [NSArray arrayWithObject:flowerCell];
  50.     [backgroundView.layer addSublayer:flowerLayer];
  51.    
  52.  
  53. }

到这里代码已经全部结束了,有需要图片素材的点击这里下载吧 http://pan.baidu.com/s/1nvALiD7


wanghang
相关推荐
发表评论
访客的头像

留言列表
  • 李洁博客  评论于  

    没太看明白这个怎么玩,到桌面上后是动态图会掉花瓣是么?

    • wanghang  评论于  

      嗯嗯,是啊,我现在换成了gif图片,你可以再看下哦

      • 李洁博客  评论于  

        看到了,这个会费电么

        • wanghang  评论于  

          哈哈,耗电肯定耗电啦,占用的内存蛮多滴

          • 李洁博客  评论于  

            那我还是不折腾了

  • 情天  评论于  

    又是干货。

分享:

支付宝

微信