美文网首页
iOS的Core Animation的一点总结记录

iOS的Core Animation的一点总结记录

作者: 滑翔Skate | 来源:发表于2017-02-21 16:49 被阅读0次

    前言

    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的理解

    持续更新中...

    相关文章

      网友评论

          本文标题:iOS的Core Animation的一点总结记录

          本文链接:https://www.haomeiwen.com/subject/yeyuwttx.html