Facebook Pop动画框架详细解析(二) —— 基本架构

版本记录

版本号 时间
V1.0 2017.12.17

前言

POP框架是Facebook开发的一个框架,是一个在iOS与OS X上通用的极具扩展性的动画引擎。它在基本的静态动画的基础上增加的弹簧动画与衰减动画,使之能创造出更真实更具物理性的交互动画。POP的API可以快速的与现有的ObjC代码集成并可以作用于任意对象的任意属性。感兴趣的可以看上面几篇文章。
1. Facebook Pop动画框架详细解析(一) —— 基本概览

框架基本架构

下面我们就看一下pop框架的基本架构,如下图所示。

从这上面可以看见这个框架还是很大的,源文件很多。


框架详细结构

接下来我们就详细的看一下这个框架。

1. 框架引用

和其他框架一样,引入一个头文件就可以包括所有功能。

POP.h
#ifndef POP_POP_H
#define POP_POP_H

#import <pop/POPDefines.h>

#import <pop/POPAnimatableProperty.h>
#import <pop/POPAnimation.h>
#import <pop/POPAnimationEvent.h>
#import <pop/POPAnimationExtras.h>
#import <pop/POPAnimationTracer.h>
#import <pop/POPAnimator.h>
#import <pop/POPBasicAnimation.h>
#import <pop/POPCustomAnimation.h>
#import <pop/POPDecayAnimation.h>
#import <pop/POPGeometry.h>
#import <pop/POPLayerExtras.h>
#import <pop/POPPropertyAnimation.h>
#import <pop/POPSpringAnimation.h>

#endif /* POP_POP_H */

2. 框架结构

POP 目前由四部分组成:1. Animations;2. Engine;3. Utility;4. WebCore。,具体结构如下图所示。

  • POP 动画极为流畅,其秘密就在于这个 Engine 中的POPAnimator 里,POP 通过 CADisplayLink 高达 60 FPS 的特性,打造了一个游戏级的动画引擎。

  • CADisplayLink是类似 NSTimer 的定时器,不同之处在于,NSTimer 用于我们定义任务的执行周期、资料的更新周期,他的执行受到 CPU 的阻塞影响,而 CADisplayLink 则用于定义画面的重绘、动画的演变,他的执行基于 frames 的间隔。

  • 通过 CADisplayLink,Apple 允许你将 App 的重绘速度设定到和屏幕刷新频率一致,由此你可以获得非常流畅的交互动画,这项技术的应用在游戏中非常常见,著名的 Cocos-2D 也应用了这个重要的技术。

  • WebCore 里包含了一些从 Apple 的开源的网页渲染引擎里拿出的源文件,与 Utility 里的组件一并,提供了 POP 的各项复杂计算的基本支持。

参考文章

1. Facebook POP 进阶指南

后记

未完,待续~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容