POP动画[3]

这一节主要讲解POP动画的自定义动画属性.

POP动画中有一个参数,叫timingFunction,与CoreAnimation中的一个参数CAMediaTimingFunction基本一样,下图表示的是kCAMediaTimingFunctionEaseInEaseOut的曲线图.

下图是Spring动画效果:

我们可以使用自定义的属性来实现POP的库中没有提供的动画.

实现的效果:

源码:

  1. //
  2. // RootViewController.m
  3. // YXPOP
  4. //
  5. // Copyright (c) 2014年 Y.X. All rights reserved.
  6. //
  7.  
  8. #import "RootViewController.h"
  9. #import "POP.h"
  10.  
  11. @interface RootViewController ()
  12.  
  13. @end
  14.  
  15. @implementation RootViewController
  16.  
  17. - (void)viewDidLoad
  18. {
  19. [super viewDidLoad];
  20. self.view.backgroundColor = [UIColor blackColor];
  21.  
  22. // 数值型label
  23. UILabel *numberLabel = [[UILabel alloc] initWithFrame:CGRectMake(, , , )];
  24. numberLabel.center = self.view.center;
  25. numberLabel.userInteractionEnabled = YES;
  26. numberLabel.textAlignment = NSTextAlignmentCenter;
  27. numberLabel.textColor = [UIColor redColor];
  28. numberLabel.text = @"";
  29. numberLabel.font = [UIFont fontWithName:@"HelveticaNeue-UltraLight"
  30. size:.f];
  31. [self.view addSubview:numberLabel];
  32.  
  33. // 添加手势
  34. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self
  35. action:@selector(tap:)];
  36. [numberLabel addGestureRecognizer:tap];
  37.  
  38. }
  39.  
  40. - (void)tap:(UITapGestureRecognizer *)tap
  41. {
  42. UILabel *tmp = (UILabel *)tap.view;
  43. POPBasicAnimation *animation = [POPBasicAnimation animation];
  44. animation.fromValue = @([tmp.text intValue]);
  45. animation.toValue = @(arc4random()% + );
  46. animation.duration = .f;
  47.  
  48. // 计算从fromValue到toValue插值的曲线
  49. animation.timingFunction = \
  50. [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
  51.  
  52. // 将计算出来的值通过writeBlock动态给控件设定
  53. animation.property = \
  54. [POPMutableAnimatableProperty propertyWithName:@"textLabel" initializer:^(POPMutableAnimatableProperty *prop) {
  55. prop.writeBlock = ^(id obj, const CGFloat values[]) {
  56. UILabel *label = (UILabel *)obj;
  57. NSNumber *number = @(values[]);
  58. int num = [number intValue];
  59. label.text = [@(num) stringValue];
  60. };
  61. }];
  62.  
  63. [tmp pop_addAnimation:animation forKey:@"numberLabelAnimation"];
  64. }
  65.  
  66. @end

他们彼此间凌乱的关系如下所示:

duration代表x轴(时间轴)

fromValue与toValue代表y轴的最小值与最大值

timingFunction代表时间曲线(EaseOut曲线)

曲线中的每一个小点代表的是根据上述各个值计算出来的一个中间值,而这个中间值就是我们用来做动画而用的动画设定值.

以下网址是介绍如何设定CAMediaTimingFunction的(http://netcetera.org/camtf-playground.html).

POP动画[3]的更多相关文章

  1. iOS动画——弹窗动画(pop动画)

    用pop动画简单实现弹窗的缩放和渐变,感觉这个动画常用,就写一下博客 pop动画是Facebook推出的动画引擎,请自行到GitHub上搜索下载拖拽导入xcode项目中. 更多pop动画使用和原理可网 ...

  2. 用POP动画引擎实现衰减动画(POPDecayAnimation)

    效果图: #import "ViewController.h" #import <POP.h> @interface ViewController () @end @i ...

  3. POP动画引擎中Layer与CALayer的一点区别

    POP动画引擎是facebook提供的一个开源框架, 可以实现很多的动画效果, 这里就不一一介绍啦, 有兴趣的童鞋请移步: https://github.com/facebook/pop 下面简单的讲 ...

  4. 用POP动画编写带富文本的自定义动画效果

    用POP动画编写带富文本的自定义动画效果 [源码] https://github.com/YouXianMing/UI-Component-Collection [效果] [特点] * 支持富文本 * ...

  5. POP动画[1]

    POP动画[1] pop动画是facebook扩展CoreAnimation的,使用及其方便:) 1:Spring系列的弹簧效果(两个动画kPOPLayerBounds与kPOPLayerCorner ...

  6. 用POP动画模拟真实秒钟摆动效果

    用POP动画模拟真实秒钟摆动效果 静态图: 动画图: 此处用到了POP中的Spring系列动画,现提供源码如下: SecondClockView.h 与 SecondClockView.m // // ...

  7. POP动画[2]

    POP动画[2] 1:定制控制器间的转场动画. 源码有点多-_-!! // // RootViewController.h // Animation // // Copyright (c) 2014年 ...

  8. 自定义UINavigationController push和pop动画

    http://segmentfault.com/q/1010000000143983 默认的UINavigationController push和pop的默认动画都是左右滑动推出,我的应用要求这种界 ...

  9. 转 脸书pop动画的五个步骤

    http://blog.csdn.net/u013741809/article/details/38511741 5 Steps For Using Facebook Pop   // 1. Pick ...

随机推荐

  1. 西蒙布朗-C4模型

    关于 C4 模型的一些解释 C4 模型是来自 software architecture for developers 一书的定义,指的是 Context 上下文场景.Container 容器.Com ...

  2. 低版本的linux系统装samba服务器

    这里所用系统fedora14,安装samba服务器.我是壮壮熊. 由于工作原因,需要在feaord14上装samba服务器. 问题描述:用yum -y install samba安装samba后,需要 ...

  3. MTCNN 实现人脸识别

    MTCNN(Multi-task CNN) MTCNN难点 WIDER FACE等数据集为我们提供的图片并不是MTCNN支持的训练样本, 需要通过几个脚本将其转为MTCNN可以接受的数据集, 这些脚本 ...

  4. 一道百度的java面试题的几种解法

    考试结束,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默想起来一个声音:”乔戈里峰” 前言 文章出自: ...

  5. Idea软件Vim插件问题

    人家说用webstorm是纯前端,用Idea是java+前端,好,那就用Idea,装上试试,全选所有插件安装,奇迹出现了,选中一行代码,backspace,删不了,我的天,好吧,复制粘贴的快捷键也不行 ...

  6. WPF判断两个时间大小避免误差

    进行查询操作的时候,经常用到判断开始时间和结束时间大小的条件,由于从控件上获取的时间除了年月日时分秒,还包括毫秒.微秒等,导致直接判断时间大小的时候会产生一些误差,如下: 结果分析:年月日时分秒一致的 ...

  7. JavaScript迭代

    定义: 指的是按照某种顺序逐个访问列表中的每一项. 迭代在数学中的定义: 在循环的基础上, 每一次循环, 都比上一次更为接近结果. 循环定义:指的是在满足条件的情况下,重复执行同一段代码. 迭代方法: ...

  8. Java基础教程(7)--运算符

      现在,我们已经学会了如何声明和初始化变量,但你可能想知道如何操作它们.运算符是对一个,两个或三个操作数执行特定操作并返回结果的特殊符号.下表列出了Java中的运算符:   表格中的运算符是按照从上 ...

  9. 15、IO (转换流、缓冲流)

    转换流概述 * A: 转换流概述 * a: 转换流概述 * OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节 * 将字符串按照指定的 ...

  10. IO流实现模拟软件试用的功能

    import java.io.*; public class TryOut { /** * IO流模拟软件试用次数的功能 * 这里注意try里BufferedOutputStream不要和InputS ...