从苹果文档学习CoreAnimation(一)

来源:互联网 发布:linux oracle 软件包 编辑:程序博客网 时间:2024/05/17 08:15

作为一个iOS小白,前辈无数次跟我提醒说,学习iOS最好的办法就是从苹果的官方文档入手,但碍于中国人普遍英文能力薄弱,一开始我还是和大部分人一样靠着一些中文资料入手(其实也是不错的方法),虽然现在已经拥有初步的开发经验,但是对动画方面还是知之甚少,于是乎,就有这篇博客,对了,在写这篇博客的时候,我还没开始看文档,边看边学边操练边写博客试试!

首先是关于CoreAnimation的优势,我们知道UIView的drawRect能通过不断地重绘来形成动画的效果,但是它有性能的瓶颈,文章原话:drawing in this way is expensive because it is done using the CPU on the main thread. 调用drawRect会在主线程中使用CPU来绘制,我们知道主线程是来处理UI的变化,如果我们大量的使用drawRect来做动画,无疑会影响UI的交互,而且它是直接使用CPU进行绘制。 

然后CoreAnimation如果做动画的呢,那得先了解它是layer层上的绘制(layer-based drawing),上面说的是视图上的绘制(view-based drawing),主要区别在于它是在图形硬件(graphics hardware)上处理图形内容,而不是通过CPU用软件形式去绘制,文档说在图形硬件上处理比用软件形式快得多(Manipulating the bitmap in hardware yields much faster animations than could be done in software)。

 

首先是获取你app提供的需要绘制的内容,然后将它缓存在位图(bitmap),有时候就是指图中的Backing Store,这时候,你改变关于layer对象的一些属性,图中是旋转45°,CoreAniamtion就会将缓存的位图和旋转的信息传给图形硬件去处理(图例是旋转),然后将具有新特性的位图显示在用户层上,这里可以看出CoreAnimation实际的作用的用来传递layer对象的信息给图形硬件,而且因为有缓存,如果绘制同一个layer对象,将直接从缓存上取,提高效率。

这篇先写到这里,第一次写博客,先看看效果,有兴趣的同学多多交流哈!

0 0
原创粉丝点击