POP: 一个流行的可扩展的动画引擎iOS,它支持spring和衰变动态动画,使其可用于构建现实,基于物理交互。Objective - C API允许快速集成, 对于所有的动画和过渡他是成熟的.

解释:

1.1 POP 使用 Objective-C++ 编写,Objective-C++ 是对 C++ 的扩展,就像 Objective-C 是 C 的扩展。而至于为什么他们用 Objective-C++ 而不是纯粹的 Objective-C. 可能是偏爱。-.O

1.2 POP 目前由四部分组成:1. Animations;2. Engine;3. Utility;4. WebCore。下图有助于你更好的理解它的架构

1.它支持CocoaPods 你可以这样

pod 'pop', '~> 1.0.8'

2.或者这样点击下载拉入工程 https://github.com/facebook/pop

3.我使用的Cocoapods 所以使用之前你需要这样

#import <POP.h>

动图

E1:

- (void)clickPopAction

{

// kPOPLayerPositionY 向下

// kPOPLayerPositionX 向右

POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPositionY];

// 移动距离

anim.toValue = [[NSNumber alloc] initWithFloat:_btnPop.center.y + 200];

// 从当前 + 1s后开始

anim.beginTime = CACurrentMediaTime() + 1.0f;

// 弹力--晃动的幅度 (springSpeed速度)

anim.springBounciness = 15.0f;

[_btnPop pop_addAnimation:anim forKey:@"position"];

POPSpringAnimation *anim1 = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBounds];

anim1.toValue = [NSValue valueWithCGRect:CGRectMake(100, 100, 99, 99)];

[_btnPop pop_addAnimation:anim1 forKey:@"size"];

}

动图

E2:在很多金融类app中比较常见、支付宝中的余额包、京东金融余额、就类似这样

// 初始化

POPBasicAnimation *anim = [POPBasicAnimation animation];

// 限时 1s

anim.duration = 3.0;

POPAnimatableProperty * prop = [POPAnimatableProperty propertyWithName:@"count++" initializer:^(POPMutableAnimatableProperty *prop) {

prop.readBlock = ^(id obj, CGFloat values[]){ values[0] = [[obj description] floatValue]; };

prop.writeBlock = ^(id obj, const CGFloat values[])

{

[obj setText:[NSString stringWithFormat:@"%.2f",values[0]]];

};

prop.threshold = 0.01;

}];

anim.property = prop;

anim.fromValue = @(0.0);

anim.toValue = @(1314.52);

[self.xt_countLabel pop_addAnimation:anim forKey:@"counting"];

动图

E3

CALayer *layer0 = [CALayer layer];

layer0.opacity = 1.0;

layer0.transform = CATransform3DIdentity;

[layer0 setMasksToBounds:YES];

[layer0 setBackgroundColor:[UIColor colorWithRed:0.5448 green:0.6836 blue:0.9986 alpha:1.0].CGColor];

[layer0 setCornerRadius:12.5];

[layer0 setBounds:CGRectMake(0, 0, 25, 25)];

[self.view.layer addSublayer:layer0];

layer0.position = CGPointMake(self.view.center.x, 266);

[self performAnimation:layer0];

- (void)performAnimation:(CALayer *)layer

{

[layer pop_removeAllAnimations];

POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerScaleXY];

static BOOL ani = YES;

if (ani) {

anim.toValue = [NSValue valueWithCGPoint:CGPointMake(1.0, 1.0)];

}else{

anim.toValue = [NSValue valueWithCGPoint:CGPointMake(1.5, 1.5)];

}

ani = !ani;

anim.completionBlock = ^(POPAnimation *anim, BOOL finished) {

if (finished) { [self performAnimation:layer]; }

};

[layer pop_addAnimation:anim forKey:@"Animation"];

}

走进 Facebook POP 的世界的更多相关文章

  1. [C#] 走进异步编程的世界 - 开始接触 async/await

    走进异步编程的世界 - 开始接触 async/await 序 这是学习异步编程的入门篇. 涉及 C# 5.0 引入的 async/await,但在控制台输出示例时经常会采用 C# 6.0 的 $&qu ...

  2. [C#] 走进异步编程的世界 - 剖析异步方法(上)

    走进异步编程的世界 - 剖析异步方法(上) 序 这是上篇<走进异步编程的世界 - 开始接触 async/await 异步编程>(入门)的第二章内容,主要是与大家共同深入探讨下异步方法. 本 ...

  3. [C#] 走进异步编程的世界 - 剖析异步方法(下)

    走进异步编程的世界 - 剖析异步方法(下) 序 感谢大家的支持,这是昨天发布<走进异步编程的世界 - 剖析异步方法(上)>的补充篇. 目录 异常处理 在调用方法中同步等待任务 在异步方法中 ...

  4. [C#] 走进异步编程的世界 - 在 GUI 中执行异步操作

    走进异步编程的世界 - 在 GUI 中执行异步操作 [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5877042.html 序 这是继<开始接 ...

  5. 走进异步编程的世界 - 开始接触 async/await

    [C#] 走进异步编程的世界 - 开始接触 async/await   走进异步编程的世界 - 开始接触 async/await 序 这是学习异步编程的入门篇. 涉及 C# 5.0 引入的 async ...

  6. iOS开发Facebook POP动效库使用教程

    如果说Origami这款动效原型工具是Facebook Paper的幕后功臣,那么POP便是Origami的地基.感谢Facebook开源了POP动效库,让人人都能制作出华丽的动效.我们只需5步,便能 ...

  7. [C#] 走进异步编程的世界 - 开始接触 async/await(转)

    原文链接:http://www.cnblogs.com/liqingwen/p/5831951.html 走进异步编程的世界 - 开始接触 async/await 序 这是学习异步编程的入门篇. 涉及 ...

  8. Miox带你走进动态路由的世界——51信用卡前端团队

    写在前面: 有的时候再做大型项目的时候,确实会被复杂的路由逻辑所烦恼,会经常遇到权限问题,路由跳转回退逻辑问题.这几天在网上看到了51信用卡团队开源了一个Miox,可以有效的解决这些痛点,于是乎我就做 ...

  9. 走进异步编程的世界 - 开始接触 async/await(转)

    序 这是学习异步编程的入门篇. 涉及 C# 5.0 引入的 async/await,但在控制台输出示例时经常会采用 C# 6.0 的 $"" 来拼接字符串,相当于string.Fo ...

随机推荐

  1. 机器视觉工具箱-Machine Vision Toolbox for Matlab

    发现了一个机器视觉的Matlab工具箱,分享一下. 机器视觉工具箱(MVT的)规定,在机器视觉和基于视觉的控制有益的多种功能.这是一个有点折衷收集反映作者在光度学,摄影测量,色度学 方面的个人利益.它 ...

  2. Linux内核监控模块-1-驱动模块(LKM)开发(以一个简单的hello world程序为例)

    在上面一篇中介绍到,监控模块要做成一个驱动模块(或者说是可加载模块,LKM),动态的加载到Linux内核中.那么这篇就简单的介绍一下怎样做一个这样的驱动模块.   以简单的hello world程序为 ...

  3. 有关collection中的一些数据结构

    Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素 ...

  4. The xor-longest Path

    The xor-longest Path Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 3875   Accepted: 8 ...

  5. call和apply还有bind

    有图有真相 function myfun1(){ //这是私有属性 var private1 = "这是私有属性1"; var privateMethod = function() ...

  6. C API向MySQL插入批量数据的快速方法——关于mysql_autocommit

    MySQL默认的数据提交操作模式是自动提交模式(autocommit).这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行.我们可以通过设置autocommit的值改变是否是自 ...

  7. c# 函数练习;结构体、枚举类型

       * 结构体 1.就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 注意:枚举类型和结构体都属于值类型. 2.定义的方法: struct student { public in ...

  8. Android开源项目发现---TextView,Button篇(持续更新)

    android-flowtextview 文字自动环绕其他View的Layout 项目地址:https://code.google.com/p/android-flowtextview/ 效果图:ht ...

  9. mac 目录详解

    打开Macintosh HD你会发现内中有四个文件夹 分别有——应用程序(Applications).系统(System).用户(User).资料库(Library).四个文件夹中又分别各有若干数量的 ...

  10. 【转】Android编译系统详解(三)——编译流程详解

    原文网址:http://www.cloudchou.com/android/post-276.html 本文原创作者:Cloud Chou. 欢迎转载,请注明出处和本文链接 1.概述 编译Androi ...