http://www.cocoachina.com/ios/20151230/14822.html


CAReplicatorLayer可以复制自己子层的layer,并且复制的出来的layer和原来的子layer拥有相同的动效。然后通过设置一些属性,就可以完成很酷的效果,非常强大。。

效果


Demo


建议先下载demo,再结合下面的分析,会好理解点。地址https://github.com/Resory/RYReplicatorLayer

逻辑


  • 本文主要讲述love动效的制作。music动效可参照love动效注释。

  • 首先我们要得到一个love路径,这个路径用UIBezierPath来制作。

  • 然后生成一个UIView,它的layer加上CAKeyframeAnimation,而CAKeyframeAnimation的路径是love路径。

  • 把UIView的layer加入CAReplicatorLayer。并对设置CAReplicatorLayer相应属性即可。

实现


  • love路径
    1
    2
    3
    4
    5
      UIBezierPath *tPath = [UIBezierPath bezierPath];
      [tPath moveToPoint:CGPointMake(SYS_DEVICE_WIDTH/2.0, 200)];
      [tPath addQuadCurveToPoint:CGPointMake(SYS_DEVICE_WIDTH/2.0, 400) controlPoint:CGPointMake(SYS_DEVICE_WIDTH/2.0 + 200, 20)];
      [tPath addQuadCurveToPoint:CGPointMake(SYS_DEVICE_WIDTH/2.0, 200) controlPoint:CGPointMake(SYS_DEVICE_WIDTH/2.0 - 200, 20)];
      [tPath closePath];
  • 生成一个UIView
    1
    2
    3
    4
      UIView *tView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
      tView.center = CGPointMake(SYS_DEVICE_WIDTH/2.0, 200);
      tView.layer.cornerRadius = 5;
      tView.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
  • 给UIView添加上CAKeyframeAnimation动效
    1
    2
    3
    4
    5
      CAKeyframeAnimation *loveAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
      loveAnimation.path = tPath.CGPath;
      loveAnimation.duration = 8;
      loveAnimation.repeatCount = MAXFLOAT;
      [tView.layer addAnimation:loveAnimation forKey:@"loveAnimation"];
  • 生成一个CAReplicatorLayer,并把UIView的layer加入其中
    1
    2
    3
    4
    5
    6
    7
      _loveLayer = [CAReplicatorLayer layer];
      _loveLayer.instanceCount = 40;                // 复制39个子layer+原本的子layer共40个layer
      _loveLayer.instanceDelay = 0.2;               // 每隔0.2出现一个layer
      _loveLayer.instanceColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0].CGColor;
      _loveLayer.instanceGreenOffset = -0.03;       // 颜色值递减。
      _loveLayer.instanceRedOffset = -0.02;         // 颜色值递减。
      _loveLayer.instanceBlueOffset = -0.01;        // 颜色值递减。


  • CAReplicatorLayer里面还有一个instanceTransform属性,musicLayer就是用它的instanceTransform属性做的。所以还有很多效果可以做。就看你脑洞够不够大了。

  • 如果你有疑问或者发现错误请留言给我。3Q~~

 
 

iOS - CAReplicatorLayer 的运用的更多相关文章

  1. iOS CAReplicatorLayer 实现脉冲动画效果

    iOS CAReplicatorLayer 实现脉冲动画效果 效果图 脉冲数量.速度.半径.透明度.渐变颜色.方向等都可以设置.可以用于地图标注(Annotation).按钮长按动画效果(例如录音按钮 ...

  2. iOS CAReplicatorLayer 简单动画

    代码地址如下:http://www.demodashi.com/demo/11601.html 写在最前面,最近在看学习的时候,偶然间发现一个没有用过的Layer,于是抽空研究了下,本来应该能提前记录 ...

  3. iOS之CAReplicatorLayer属性简介和使用

    1.CAReplicatorLayer简介 CAReplicatorLayer用于对图层进行复制,包括图层的动画也能复制!可以看着将某一段事务进行重复! #import <QuartzCore/ ...

  4. ios项目里扒出来的json文件

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #000000 } p.p2 { margin: 0.0px 0. ...

  5. Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)

    下拉刷新 EGOTableViewPullRefresh - 最早的下拉刷新控件. SVPullToRefresh - 下拉刷新控件. MJRefresh - 仅需一行代码就可以为UITableVie ...

  6. IOS Core Animation Advanced Techniques的学习笔记(五)

    第六章:Specialized Layers   类别 用途 CAEmitterLayer 用于实现基于Core Animation粒子发射系统.发射器层对象控制粒子的生成和起源 CAGradient ...

  7. iOS - 开发类库

    开发类库   UI 项目名称 项目信息 1.MJRefresh 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能.可以自定义上下拉刷新的文字说明. ...

  8. iOS及Mac开源项目和学习资料【超级全面】

    UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UITable ...

  9. iOS核心动画学习整理

    最近利用业余时间终于把iOS核心动画高级技巧(https://zsisme.gitbooks.io/ios-/content/chapter1/the-layer-tree.html)看完,对应其中一 ...

随机推荐

  1. Find- Linux必学的60个命令

    1.作用 find命令的作用是在目录中搜索文件,它的使用权限是所有用户. 2.格式 find [path][options][expression] path指定目录路径,系统从这里开始沿着目录树向下 ...

  2. codeforces600E. Lomsat gelral(dsu on tree)

    dsu on tree先分轻重儿子先处理轻边,再处理重儿子再加上轻儿子的答案 #include<iostream> #include<cstdio> #include<q ...

  3. vim之buffer 与 折叠

    常用的折叠命令有: zf zi zo zc zd zf10j从当前行向下10行创建折叠(共11行),zfj创建两行的折叠 常用的还有zf%. 进行多文件编辑时,会涉及到buffer的使用::ls 查看 ...

  4. x86架构:x86架构

    ylbtech-x86架构:x86架构 X86架构(The X86 architecture)是微处理器执行的计算机语言指令集,指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令 ...

  5. Life of Pi

    ·when you look into his eyes,you are seeing your own emotionsreflected back at you,nothing else. ·Go ...

  6. Springboot 之 启动报错-Cannot determine embedded database driver class for database type NONE

    Springboot 之 启动报错-数据库 springboot项目在启动时,报如下错误: Error starting ApplicationContext. To display the auto ...

  7. git 远程服务器创建项目自动化部署、克隆推送免密码

    1.用git用户 在git目录下 创建裸仓库 git init --bare project_01.git 2.在裸仓库的 hooks目录下创建 post-receive 文件775 3.post-r ...

  8. BZOJ1491:1491: [NOI2007]社交网络

    1491: [NOI2007]社交网络 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2204  Solved: 1175[Submit][Status ...

  9. curl下载安装与使用

    下载: https://curl.haxx.se/download.html 安装: 二进制安装.即解压即可. 使用 1.获取页面内容. 不加任何参数时,默认会发送GET请求来获取url内容到标准输出 ...

  10. 微信小程序之组件的集合(二)

    继续微信小程序开发的学习,继续跟着老师的讲课思路来学习,继续开发项目中所用到的组件 一.导航栏navi组件的开发 1.新建组件的文件结构 这个就是先新建目录navi.然后在navi文件夹中新建comp ...