iOS总结-有关动画基础之CoreGraphics、Quartz2D、QuartzCore、CoreAnimation的总结

参考:https://blog.csdn.net/make___/article/details/45576857
https://www.jianshu.com/p/397690fd4555
一直对于CoreGraphics, QuartzCore, CoreAnimation区分不清楚。
CoreGraphics,核心图形。它是ios的核心图形库,平时使用最频繁的point,size,rect等这些图形,都定义在这个框架中,类名以CG开头的都属于CoreGraphics框架,它提供的都是C语言的函数接口,是可以在ios和mac os通用的

CoreGraphics的类名是以CG开头的,CGRect,CGPoint都是在CGGeometry这个几何相关的类中定义的。CGFont封装成UIFont,CGImage构成了UIImage,CGContext是绘图的上下文。CoreGraphics是系统绘制界面、文字、图形等UI的基础。

Quartz2D是一个基于CoreGraphics API的绘图框架,它在iOS/MAC OS 负责绘制图形:
贝塞尔曲线,线条、三角形、矩形、圆、圆弧等
绘制文字   绘制/生成图片(图像)读取/生成PDF  截图/剪切图片  自定义UI控件
API是C语言写成的, 所以ARC并不起作用,仍然需要手动管理内存。

QuartzCore和CoreAnimation
Quartz是引用了CoreAnimation头文件,看着实际是同一个,是一个基于CoreGraphics的OC语言封装,封装出了基本渲染类CALayer,两者都是跨ios和mac os使用的,这点区别UIKit,并且CoreAnimation中大量用到CoreGraphics中的类,实现动画自然要用到图形库中的东西。

CoreAnimation核心动画,负责动画的。
CoreAnimation执行动画是在后台,不会阻塞主线程。
CoreAnimation作用在CALayer, 不是View
CoreGraphics和CoreAnimation关系: 都是跨iOS和Mac OS使用的,这点区别于UIKit.

 

以CA开头都是它的类,带layer的类是构成UIView的基础。
layer层只负责呈现视图,不能响应用户事件。
CAShapeLayer
  用阿里根据CGPath来渲染图层,CGPath就是CoreGraphics中的一部分
CATextLayer
  用来呈现文字,包含UILabel的功能
CAGradientLayer
  用来生成两种或更多颜色平滑渐变的
CAReplicaorLayer
  为了高效生成许多相似的图层。它会绘制一个或多个图层的子图层,并在每个复制体上应用不同的变换
CAScrollLayer
 像UIScrollView
CATiledLayer
CAEAGLLayer 进行OpenGL绘图工作
CAAnimation类继承与NSObject,是一个抽象类,并不直接负责动画,有一个子类CAPropetyAnimation, 也是抽象类。CAPropertyAnimation的两个子类才直接对layer层进行动画操作,其中CABasicAnimation负责基础动画,CAKeyFrameAnimation负责关键帧动画。
带有Emitter的类是负责粒子动画的类,可以用来做炫酷的粒子动画。
CAMediaTimiing是一个协议,精确控制时间,animation和layer实现这个协议。 

猜你喜欢

转载自blog.csdn.net/qq_28551705/article/details/85149873