POP动画引擎中Layer与CALayer的一点区别
POP动画引擎是facebook提供的一个开源框架, 可以实现很多的动画效果, 这里就不一一介绍啦, 有兴趣的童鞋请移步:
https://github.com/facebook/pop
下面简单的讲一下POP动画引擎中Layer与CALayer的区别:
这里, 代码做的都是同一个效果: 执行位移动画3秒, 然后在1秒后移除所有动画
使用POP效果图:

使用CALayer效果图:

可以看到, POP执行的动画当动画被移除之后, 被执行对象保留了被停止时的状态
而CALayer执行的动画当动画被移除之后, 跳到了另外一个状态, 这是因为CALayer添加的
CABasicAnimation动画会另外生成一个图层来执行动画, 而CALayer本身早已经是动画结束后状态, 当动画结束后就会显示出来,
所以就会出现, 当动画执行到一半被移除的时候, 就会出现跳动的现象..
这也就是这两者之间的一点区别..
以下是代码:
#import "ViewController.h"
#import <POP.h> @interface ViewController () // 测试CALayer
@property (nonatomic, strong) CALayer *normalLayer;
// 用于测试POP的Layer
@property (nonatomic, strong) CALayer *popLayer; @end @implementation ViewController - (void)viewDidLoad
{
[super viewDidLoad]; } - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{ [self setupNormalLayer]; // 一秒后移除所有动画
[self performSelector:@selector(stopAnimation) withObject:nil afterDelay:.f];
} - (void)setupPopLayer
{
// 初始化
self.popLayer = [CALayer layer];
self.popLayer.frame = CGRectMake(, , , );
self.popLayer.backgroundColor = [UIColor redColor].CGColor;
[self.view.layer addSublayer:self.popLayer];
// 添加POP动画
POPBasicAnimation *basicAnimation = [POPBasicAnimation animationWithPropertyNamed:@"position"];
basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(self.popLayer.position.x, )];
basicAnimation.duration = .f;
[self.popLayer pop_addAnimation:basicAnimation forKey:nil];
} - (void)setupNormalLayer
{
// 初始化
self.normalLayer = [CALayer layer];
self.normalLayer.frame = CGRectMake(, , , );
self.normalLayer.backgroundColor = [UIColor redColor].CGColor;
[self.view.layer addSublayer:self.normalLayer];
// 添加动画
CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
basicAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(self.normalLayer.position.x, self.normalLayer.position.y)];
basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(self.normalLayer.position.x, )];
basicAnimation.duration = .f;
[self.normalLayer addAnimation:basicAnimation forKey:nil]; self.normalLayer.position = CGPointMake(self.normalLayer.position.x, );
} - (void)stopAnimation
{
[self.normalLayer removeAllAnimations];
// [self.popLayer pop_removeAllAnimations];
} @end
POP动画引擎中Layer与CALayer的一点区别的更多相关文章
- 用POP动画引擎实现弹簧动画(POPSpringAnimation)
效果图: #import "ViewController.h" #import <POP.h> @interface ViewController () @proper ...
- 用POP动画引擎实现衰减动画(POPDecayAnimation)
效果图: #import "ViewController.h" #import <POP.h> @interface ViewController () @end @i ...
- Xcode7.3.1中通过最新的CocoaPod安装pop动画引擎
CocoaPod是一个用ruby实现,用于方便的管理Xcode中第三方插件的管理器.用它我们可以很方便的安装和升级插件而不用担心破坏原有的项目. 而pop是一个用于实现App中动画的引擎,它是由Fac ...
- 谈谈你对 mysql 引擎中的 MyISAM与InnoDB的区别理解?
InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISA ...
- [译]理解 Windows UI 动画引擎
本文译自 Nick Waggoner 的 "Understand what’s possible with the Windows UI Animation Engine",已获原 ...
- 聊聊动画引擎 pop
iOS可以通过CADisplayLink实现自定义动画引擎,pop就是基于此实现的,而且比原生Core Animation更强大好用.譬如当ViewController侧滑返回的时候,系统会将Core ...
- Unity3d动画脚本 Animation Scripting(深入了解游戏引擎中的动画处理原理)
也许这一篇文章的内容有点枯燥,但我要说的是如果你想深入的了解游戏引擎是如何处理动画片断或者素材并 让玩家操控的角色动起来栩栩如生,那么这真是一篇好文章(当然我仅仅是翻译了一下) 动画脚本 Anim ...
- iOS动画——弹窗动画(pop动画)
用pop动画简单实现弹窗的缩放和渐变,感觉这个动画常用,就写一下博客 pop动画是Facebook推出的动画引擎,请自行到GitHub上搜索下载拖拽导入xcode项目中. 更多pop动画使用和原理可网 ...
- POP动画[1]
POP动画[1] pop动画是facebook扩展CoreAnimation的,使用及其方便:) 1:Spring系列的弹簧效果(两个动画kPOPLayerBounds与kPOPLayerCorner ...
随机推荐
- html5 中常用的标签和属性
标签: <blockquote> 标签定义摘自另一个源的块引用. <blockquote> 与 </blockquote> 之间的所有文本都会从常规文本中分离出来, ...
- IDF 实验室部分题目WriteUp
前天花了一个下午的时间刷了几道IDF实验室的题目, 这个网站实在是有点冷清, 题目也比较少, 所以就被我和师兄们刷榜了2333... 因为我最先开始做, 所以就干脆刷到第一去了. 题目很水, 切莫见怪 ...
- SQLSERVER收缩数据库日志
数据库名为:EKECMS DUMP TRANSACTION EKECMS WITH NO_LOG;BACKUP LOG EKECMS WITH NO_LOG;DBCC SHRINKDATABASE(E ...
- WPS怎样设置多级标题(如四级标题)
WPS期初,乍一看最多只能设置三级标题. 怎样设置四级以上标题呢? 这里以设置四级标题为例: 点击‘视图’->'大纲', 假如,现在2.3.3这一行是三级标题: 在下拉框里选择‘4级’就可以了. ...
- RUBY,玩玩~~~
我觉得吧,这东瀛的红宝石,也得玩玩,毕竟,RUBY ON RAILS,PUPPET等也是一股力量. 作为混IT圈的,知道总没坏处. 就是感觉和C,C++,JAVA,C#,PHP,甚至PYTHON的感觉 ...
- Keil_uvision_4基本使用教程
Keil C51 V9.00 即09年发布的最新版本uVision 4,版本外观改变比较大,可以使用以前的注册文件.如果全新安装,在VISTA或者WIN 7系统下,请使用管理员方式运行,然后注册即可无 ...
- 【Algorithm】逆序数的分治求解
逆序数的分治求解,时间复杂度O(nlgn).基本思想是在归并排序的基础上加逆序计数. #include <iostream> #include <cstdio> #includ ...
- 【HDOJ】1053 Entropy
构造huffman编码,果断对字符进行状态压缩. #include <iostream> #include <cstdio> #include <cstring> ...
- 百度识图API
http://stu.baidu.com/ http://www.360doc.com/content/14/0801/17/21412_398653199.shtml http://download ...
- BZOJ 1015 [JSOI2008]星球大战starwar
1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 3551 Solved: 1581[Submit ...