<!--
{
  "availability" : [
    "iOS: 2.0.0 -",
    "iPadOS: 2.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.3.0 -",
    "tvOS: 9.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 11.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "QuartzCore",
  "identifier" : "/documentation/QuartzCore",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "Core Animation"
    ],
    "preciseIdentifier" : "QuartzCore"
  },
  "title" : "Core Animation"
}
-->

# Core Animation

Render, compose, and animate visual elements.

## Overview

Core Animation provides high frame rates and smooth animations without burdening the CPU or slowing down your app. Core Animation does most of the work of drawing each frame of an animation for you. You’re responsible for configuring the animation parameters, such as the start and end points, and Core Animation does the rest. It accelerates the rendering by handing over most of the work to dedicated graphics hardware. For more details, see [Core Animation Programming Guide](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004514).

## Topics

### Layer Basics

[`CALayer`](/documentation/QuartzCore/CALayer)

An object that manages image-based content and allows you to perform animations on that content.

[`CALayerDelegate`](/documentation/QuartzCore/CALayerDelegate)

Methods your app can implement to respond to layer-related events.

[`CAConstraint`](/documentation/QuartzCore/CAConstraint)

A representation of a single layout constraint between two layers.

[`CALayoutManager`](/documentation/QuartzCore/CALayoutManager)

Methods that allow an object to manage the layout of a layer and its sublayers.

[`CAConstraintLayoutManager`](/documentation/QuartzCore/CAConstraintLayoutManager)

An object that provides a constraint-based layout manager.

[`CAAction`](/documentation/QuartzCore/CAAction)

An interface that allows instances to respond to actions triggered by a Core Animation layer change.

### Text, Shapes, and Gradients

[`CATextLayer`](/documentation/QuartzCore/CATextLayer)

A layer that provides simple text layout and rendering of plain or attributed strings.

[`CAShapeLayer`](/documentation/QuartzCore/CAShapeLayer)

A layer that draws a cubic Bezier spline in its coordinate space.

[`CAGradientLayer`](/documentation/QuartzCore/CAGradientLayer)

A layer that draws a color gradient over its background color, filling the shape of the layer.

### Animation

[`CAAnimation`](/documentation/QuartzCore/CAAnimation)

The abstract superclass for animations in Core Animation.

[`CAAnimationDelegate`](/documentation/QuartzCore/CAAnimationDelegate)

Methods your app can implement to respond when animations start and stop.

[`CAPropertyAnimation`](/documentation/QuartzCore/CAPropertyAnimation)

An abstract subclass for creating animations that manipulate the value of layer properties.

[`CABasicAnimation`](/documentation/QuartzCore/CABasicAnimation)

An object that provides basic, single-keyframe animation capabilities for a layer property.

[`CAKeyframeAnimation`](/documentation/QuartzCore/CAKeyframeAnimation)

An object that provides keyframe animation capabilities for a layer object.

[`CASpringAnimation`](/documentation/QuartzCore/CASpringAnimation)

An animation that applies a spring-like force to a layer’s properties.

[`CATransition`](/documentation/QuartzCore/CATransition)

An object that provides an animated transition between a layer’s states.

[`CAValueFunction`](/documentation/QuartzCore/CAValueFunction)

An object that provides a flexible method of defining animated transformations.

### Animation Groups

[`CAAnimationGroup`](/documentation/QuartzCore/CAAnimationGroup)

An object that allows multiple animations to be grouped and run concurrently.

[`CATransaction`](/documentation/QuartzCore/CATransaction)

A mechanism for grouping multiple layer-tree operations into atomic updates to the render tree.

### Animation Timing

[`CACurrentMediaTime()`](/documentation/QuartzCore/CACurrentMediaTime())

Returns the current absolute time, in seconds.

[`CAMediaTimingFunction`](/documentation/QuartzCore/CAMediaTimingFunction)

A function that defines the pacing of an animation as a timing curve.

[`CAMediaTiming`](/documentation/QuartzCore/CAMediaTiming)

Methods that model a hierarchical timing system, allowing objects to map time between their parent and local time.

[`CADisplayLink`](/documentation/QuartzCore/CADisplayLink)

A timer object that allows your app to synchronize its drawing to the refresh rate of the display.

[`CAMetalDisplayLink`](/documentation/QuartzCore/CAMetalDisplayLink)

A class your Metal app uses to register for callbacks to synchronize its animations for a display.

[`CAMetalDisplayLink.Update`](/documentation/QuartzCore/CAMetalDisplayLink/Update)

Stores information about a single update from a Metal display link instance.

[`CAMetalDisplayLinkDelegate`](/documentation/QuartzCore/CAMetalDisplayLinkDelegate)

A protocol your app implements to respond to callbacks from Core Animation for a Metal display link.

### Particle Systems

[`CAEmitterLayer`](/documentation/QuartzCore/CAEmitterLayer)

A layer that emits, animates, and renders a particle system.

[`CAEmitterCell`](/documentation/QuartzCore/CAEmitterCell)

The definition of a particle emitted by a particle layer.

### Advanced Layer Options

[`CAScrollLayer`](/documentation/QuartzCore/CAScrollLayer)

A layer that displays scrollable content larger than its own bounds.

[`CATiledLayer`](/documentation/QuartzCore/CATiledLayer)

A layer that provides a way to asynchronously provide tiles of the layer’s content, potentially cached at multiple levels of detail.

[`CATransformLayer`](/documentation/QuartzCore/CATransformLayer)

Objects used to create true 3D layer hierarchies, rather than the flattened hierarchy rendering model used by other layer types.

[`CAReplicatorLayer`](/documentation/QuartzCore/CAReplicatorLayer)

A layer that creates a specified number of sublayer copies with varying geometric, temporal, and color transformations.

### Metal and OpenGL

[`CAMetalLayer`](/documentation/QuartzCore/CAMetalLayer)

A Core Animation layer that Metal can render into, typically displayed onscreen.

[`CAMetalDrawable`](/documentation/QuartzCore/CAMetalDrawable)

A Metal drawable associated with a Core Animation layer.

[`CAEAGLLayer`](/documentation/QuartzCore/CAEAGLLayer)

A layer that supports drawing OpenGL content in iOS and tvOS applications.

[`CAEDRMetadata`](/documentation/QuartzCore/CAEDRMetadata)

Metadata describing how extended dynamic range (EDR) values should be tone mapped.

[`CAOpenGLLayer`](/documentation/QuartzCore/CAOpenGLLayer)

A layer that provides a layer suitable for rendering OpenGL content.

[`CARenderer`](/documentation/QuartzCore/CARenderer)

A layer that allows an application to render a layer tree into a Core OpenGL context.

### ProMotion

[Optimizing iPhone and iPad apps to support ProMotion displays](/documentation/QuartzCore/optimizing-iphone-and-ipad-apps-to-support-promotion-displays)

Improve your app’s visual appearance and save power by requesting preferred refresh rates and synchronizing your animations with the system.

### Remote Display of Layer Content

[`CARemoteLayerClient`](/documentation/QuartzCore/CARemoteLayerClient)

A legacy class for cross-process rendering.

[`CARemoteLayerServer`](/documentation/QuartzCore/CARemoteLayerServer)

A legacy class for cross-process rendering.

### Transforms

[Transforms](/documentation/QuartzCore/transforms)

Define transform matrices to apply affine transformations to layers in Core Animation.

### Quartz Composer

  <doc://com.apple.documentation/documentation/Quartz/QCCompositionLayer>

### Reference

[Core Animation Structures](/documentation/QuartzCore/core-animation-structures)

[Core Animation Constants](/documentation/QuartzCore/core-animation-constants)

[QuartzCore Functions](/documentation/QuartzCore/quartzcore-functions)

[Core Animation Data Types](/documentation/QuartzCore/core-animation-data-types)

## See Also

  [Core Animation Programming Guide](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004514)



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)
