search

Home  >  Q&A  >  body text

objective-c - CoreAnimation 和 CoreGraphics这两个框架的区别

1.本人想知道CoreAnimation(核心动画)和CoreGraphics(核心?)这两个框架的区别

2.通过查询并未得到很令人满意的答案,所以来此想大牛提问

3.占用GPU的情况是如何的?

黄舟黄舟2765 days ago664

reply all(1)I'll reply

  • 天蓬老师

    天蓬老师2017-05-02 09:21:40

    First of all, let’s talk about Graphic which means 图形.

    Compare the header files first

    CoreAnimation.h

    #ifndef COREANIMATION_H
    #define COREANIMATION_H
    
    #include <QuartzCore/CABase.h>
    #include <QuartzCore/CATransform3D.h>
    
    #ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <QuartzCore/CAAnimation.h>
    #import <QuartzCore/CADisplayLink.h>
    #import <QuartzCore/CAEAGLLayer.h>
    #import <QuartzCore/CAMetalLayer.h>
    #import <QuartzCore/CAEmitterBehavior.h>
    #import <QuartzCore/CAEmitterCell.h>
    #import <QuartzCore/CAEmitterLayer.h>
    #import <QuartzCore/CAGradientLayer.h>
    #import <QuartzCore/CALayer.h>
    #import <QuartzCore/CAMediaTiming.h>
    #import <QuartzCore/CAMediaTimingFunction.h>
    #import <QuartzCore/CAReplicatorLayer.h>
    #import <QuartzCore/CAScrollLayer.h>
    #import <QuartzCore/CAShapeLayer.h>
    #import <QuartzCore/CATextLayer.h>
    #import <QuartzCore/CATiledLayer.h>
    #import <QuartzCore/CATransaction.h>
    #import <QuartzCore/CATransformLayer.h>
    #import <QuartzCore/CAValueFunction.h>
    #endif
    
    #endif /* COREANIMATION_H */

    CoreGraphics.h

    #ifndef COREGRAPHICS_H_
    #define COREGRAPHICS_H_
    
    #include <CoreGraphics/CGBase.h>
    #include <CoreGraphics/CGAffineTransform.h>
    #include <CoreGraphics/CGBitmapContext.h>
    #include <CoreGraphics/CGColor.h>
    #include <CoreGraphics/CGColorSpace.h>
    #include <CoreGraphics/CGContext.h>
    #include <CoreGraphics/CGDataConsumer.h>
    #include <CoreGraphics/CGDataProvider.h>
    #include <CoreGraphics/CGError.h>
    #include <CoreGraphics/CGFont.h>
    #include <CoreGraphics/CGFunction.h>
    #include <CoreGraphics/CGGeometry.h>
    #include <CoreGraphics/CGGradient.h>
    #include <CoreGraphics/CGImage.h>
    #include <CoreGraphics/CGLayer.h>
    #include <CoreGraphics/CGPDFArray.h>
    #include <CoreGraphics/CGPDFContentStream.h>
    #include <CoreGraphics/CGPDFContext.h>
    #include <CoreGraphics/CGPDFDictionary.h>
    #include <CoreGraphics/CGPDFDocument.h>
    #include <CoreGraphics/CGPDFObject.h>
    #include <CoreGraphics/CGPDFOperatorTable.h>
    #include <CoreGraphics/CGPDFPage.h>
    #include <CoreGraphics/CGPDFScanner.h>
    #include <CoreGraphics/CGPDFStream.h>
    #include <CoreGraphics/CGPDFString.h>
    #include <CoreGraphics/CGPath.h>
    #include <CoreGraphics/CGPattern.h>
    #include <CoreGraphics/CGShading.h>
    
    #endif    /* COREGRAPHICS_H_ */

    If you look closely, you can see that CoreGraphics is the underlying drawing framework. What we will actually use are some underlying drawing functions and variables at the beginning of CG. This is a pure C language framework.

    QuartzCore is the framework you mentioned that includes CoreAnimation. It is the basic rendering framework of the iOS system, an OC language framework, and a set of OC language packages based on QuartzCore也就是你说的包含了CoreAnimation的框架,是iOS系统的基本渲染框架,是一个OC语言框架,是一套基于CoreGraphics的OC语言封装,封装出了基本渲染类CALayer , encapsulates the basic rendering class CALayer.

    I wonder if you can understand the difference between the two at this point.

    reply
    0
  • Cancelreply