iOS动画系列之---Pop和Core Animation区别

Core Animation的基本原理:

在Core Animation 做相关动画时,你的应用完全不会参与动画的绘制,这些动画绘制完全独立于你的应用进程。这意味着你可以继续在主线程做其他事情,并且不会影响到CA的性能。如果你阻塞了你的主线程,或者你在调试器中暂停了你的程序,你的动画还是会继续执行。

POP 动画库的基本原理:

POP 本质上是基于定时器的动画库,使用每秒 60 频率的定时器,使得动画刷新绘制频率与屏幕刷新频率一致。很多这类动画库都使用 CADisplayLink 做为一个回调源。

一旦定时器刷新,动画库会计算那些活动的东西的状态(通常是layer 属性,如 bound,opactiy,transform 等)。然后动画库提供最新计算的值给有动画的 layer 由于 layer 的一些参数已经被改变,你需要通知系统在屏幕上重绘一切东西,通过这种方式来做动画的。

POP 缺陷:

1.由于 POP 是基于定时器定时刷新添加动画的原理,那么如果将动画库运行在主线程上,会由于线程阻塞的问题导致动画效果出现卡顿、不流畅的情况。更为关键的是,你不能将动画效果放在子线程,因为你不能将对 view 和 layer 的操作放到主线程之外。

POP 受主线程阻塞的影响很大,在使用过程中,应避免在有可能发生主线程阻塞的情况下使用 POP ,避免制作卡顿的动画效果,产生不好的用户体验。

二者区别:

1.在主线程没有阻塞的情况下,两种动画库的表现并无差异。动画效果有点不一样,其在于时间函数。

做CA 显示动画时,默认的时间函数是kCAMediaTimingFunctionLinear

而POP 却是kCAMediaTimingFunctionEaseOut,只有手动把pop参数设置成kCAMediaTimingFunctionLinear,两者动画就一致了。

2.在主线程阻塞时,利用 POP 制作的动画视图,在每隔 1s 都会卡顿一下,而 CA 的视图却完全不受主线程阻塞的影响。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,908评论 25 708
  • 一丶介绍 官方地址:https://github.com/facebook/pop POP是一个在iOS与OS X...
    丶纳凉阅读 1,556评论 0 3
  • 书写的很好,翻译的也棒!感谢译者,感谢感谢! iOS-Core-Animation-Advanced-Techni...
    钱嘘嘘阅读 2,315评论 0 6
  • 你总那么温文尔雅 从过去到现在 记得,第一次见到你 你就是那么的含蓄 简练,且精致 后来—— 我常寄托情感 在你身...
    不与世人纠缠阅读 284评论 3 4
  • 2013年2月24日,元宵节 烈:小七,我昨晚放孔明灯了 烈:终于赶在元宵前去放了 2013年的2月9日,七天对烈...
    七之恋阅读 616评论 0 0