Facebook 2 月发布的新闻类应用 Paper,因为其灵动的用户界面和交互,成为近来最令人眼前一亮的移动产品之一。
而这个产品的背后是 2011 年 Facebook 收购的 Push Pop Press,创始人是分别在 Apple 任设计师和工程师的 Mike Matas 与 Kimon Tsinteris。他们的合作者还有传奇人物 Bret Victor。他们为美国前副总统 Al Gore 开发的电子书 Our Choice 当时就曾技惊四座。
产品幕后支撑的则是一系列创新工具和技术(无法直接访问)的使用,包括异步的用户界面,复杂的交互,GPU 优化,已经开源的小组件 KVOController 和 Shimmer、Tweaks,原型设计工具 Origami 等等。而其中非常引人注目的技术,是动画引擎 Pop。
4 月 21 日,Tapity 的 Jeremy Olson 透露Facebook 计划开源 Pop 之后,移动开发社区都进入了等候状态。在微博上也可以搜到不只一个开发者在翘首等待 Pop 的开源。
就在 1 个小时前,Facebook 将 Pop 开源了:https://github.com/facebook/pop。而就在短短的几十分钟里,项目的关注数迅速达到 700 多。
Paper 的主要开发者之一 Kimon Tsinteris 在 Facebook 的工程博客里撰文(请自备梯子)简单介绍了 Pop 的工作原理。
iOS 原生的 Core Animation 框架只提供了 linear, ease-in, ease-out 和 ease-in-ease-out 等 4 种静态动画:
这些限制了 iOS 设备上触摸和手势应该有的表现力。因此 Kimon Tsinteris 决定在 Core Animation 基础上增加 Spring、Decay 和 Custom 3 种动态动画效果:
Spring 和 Decay 是 Paper 如此灵动的原因所在。而 Custom 则使 Pop 成为可扩展的动画框架,可以为任何 Objective-C 对象的任何属性增加动画效果。
另外,Pop 还提供了一个对开发者非常友好的编程模型,使用方式与 Core Animation 基本一致。原来 Core Animation 用来启停动画的这段代码:
用 Pop 后可以写成这样:
而这几行代码说明了如何给一个层的边增加 Spring 效果: