天天看点

POP介绍与使用实践(快速上手动画)[转]

动画在app开发过程中 大家多多少少都会接触到 而且随着ios7的扁平化风格启用之后 越来越多的app开始尝试加入各种绚丽的动画交互效果以增加app的用户体验(当然 还是以国外的app居多)

有过相关开发经验的同学肯定知道在ios中 动画相关的部分都是基于core animation 但是今天我们不讨论core animation 今天的主角是pop -来自于facebook的动画引擎(其实我不喜欢把pop定义为动画引擎 我愿意称它为函数发生器)

<a href="https://github.com/facebook/pop" target="_blank">官方地址 https://github.com/facebook/pop</a>

官方介绍(翻译版)

pop是一个在ios与os x上通用的极具扩展性的动画引擎 它在基本的静态动画的基础上增加的弹簧动画与衰减动画 使之能创造出更真实更具物理性的交互动画 pop的api可以快速的与现有的objc代码集成并可以作用于任意对象的任意属性 pop是个相当成熟且久经考验的框架 facebook出品的令人惊叹的paper应用中的所有动画和效果即出自pop

pop的神奇之处在于 它是独立与core animation的存在 所以 忘记core animation吧 忘记layer tree吧 迎接一个简单的明天 (lol 开玩笑的~:) 很多地方还是会需要core animation的 不过说不定哪天苹果大发善心 将动画相关的部分向pop借鉴一点也不是不可能的(比如spritekit就借鉴了cocos2d :)

pop默认支持三种动画 但同时也支持自定义动画

popbasicanimation

popspringanimation

popdecayanimation

popcustomanimation //自定义动画

这里我们只讨论前三种(因为自定义动画我也没用过 :) 先来看看官方的示例代码吧

popbasicanimation使用最广泛 提供固定时间间隔的动画(如淡入淡出效果)

其动画效果如下

POP介绍与使用实践(快速上手动画)[转]

可以看到 添加一个动画最少仅需三步

定义一个animation对象 并指定对应的动画属性

设置初始值和默认值(初始值可以不指定 会默认从当前值开始)

添加到想产生动画的对象上

popbasicanimation可配置的属性与默认值为

popbasicanimation提供四种timingfunction(很熟悉 对不对? 就是core animation中那些)

kcamediatimingfunctionlinear

kcamediatimingfunctioneasein

kcamediatimingfunctioneaseout

kcamediatimingfunctioneaseineaseout

其时间函数分别如下

POP介绍与使用实践(快速上手动画)[转]
POP介绍与使用实践(快速上手动画)[转]
POP介绍与使用实践(快速上手动画)[转]
POP介绍与使用实践(快速上手动画)[转]

popspringanimation也许是大多数人使用pop的理由 其提供一个类似弹簧一般的动画效果(使用后 app立马就活泼起来了 有木有?!)

POP介绍与使用实践(快速上手动画)[转]

popspringanimation可配置的属性与默认值为

注意:popspringanimation是没有duration字段的 其动画持续时间由以上几个参数决定

其时间函数如下

POP介绍与使用实践(快速上手动画)[转]

popdecayanimation提供一个过阻尼效果(其实spring是一种欠阻尼效果) 可以实现类似uiscrollview的滑动衰减效果(是的 你可以靠它来自己实现一个uiscrollview)

POP介绍与使用实践(快速上手动画)[转]

注意:这里对popdecayanimation设置tovalue是没有意义的 会被忽略(因为目的状态是动态计算得到的)

popdecayanimation可配置的属性与默认值为

注意:popdecayanimation也是没有duration字段的 其动画持续时间由velocity与deceleration决定

POP介绍与使用实践(快速上手动画)[转]

接下来我们看一下pop默认支持哪些属性的动画 打开popanimatablepropery.h可以看到如下定义(这些是到目前为止 所支持的属性 随着版本的更新 还在不断的新增中 :)