iOS的Core Animation的一点总结记录

2017-02-21  本文已影响0人  滑翔Skate

前言

iOS核心动画框架Core Animation,可以从“动画”的两个字上进行理解。何为“动画”?首先,它是一系列的“画”,因此,其包含“画”这个过程,也就是绘图的过程;其次,这些“画”要“动”起来,才能成为“动画”,也就是它要包含“动”的过程。这应该是所有系统实现“动画”的基本过程,iOS也不例外。
从Core Animation的框架组成来看,也确实如此:

CoreAnimation框架组成

“画”也就是绘图

撇开硬件层Graphics Hardware,iOS提供了两个绘图框架:OpenGL ES/OpenGL和Core Grapics。

  1. OpenGL ES/OpenGL : 第三方开源库,这个就不用多说了,是个地球人都知道。
  2. Core Graphic : 是对苹果自己实现的绘图框架Quart 2D的封装,Quart 2D 是一组二维绘图和渲染API,而Core Graphic则是通过这组API实现绘图功能的。需要注意的是,它可以在iOS和Mac OS通用。

Core Animation通过以上两个绘图框架实现了“画”的功能。

“动”串联了“画”

Core Animation是QuartzCore的子集,甚至可以说就是QuartzCore = Core Animation,这点可以通过其头文件看到:

#ifndef QUARTZCORE_H
#define QUARTZCORE_H

#include <QuartzCore/CoreAnimation.h>

#endif /* QUARTZCORE_H */

这里也就解释了一直困扰我的问题:QuartzCore、 Core Animation、Core Graphic 、Quart 2D四者之间的关系。
注意:CoreAnimation也是在iOS和Mac OS上是通用的。

问题总结

1.为什么CA神马神马的,用的时候好多都要“.CGXXXX”呢?

CALayer = [[CALayer alloc] init];
layer.backgroundColor = [UIColor redColor].CGColor;  

首先,CALayer,它是CoreAnimation中的类。前面说CoreAnimation是跨平台的,为了跨平台的特性,它的backgroundColor属性就不能使用UIColor类型了,因为UIKit只能使用于iOS,而CoreGraphics框架是跨平台的,所以CALayer类的backgroundColor属性就使用了CGColor类型。所以使用时在赋值前要先进行转换,将UIKit中的东西转换为CoreGraphics中的类型。
参考 对CoreGraphics和QuartzCore的理解

持续更新中...

上一篇下一篇

猜你喜欢

热点阅读