The abstract superclass for animations in Core Animation.


@interface CAAnimation : NSObject


CAAnimation provides the basic support for the CAMediaTiming and CAAction protocols. You do not create instance of CAAnimation: to animate Core Animation layers or SceneKit objects, create instances of the concrete subclasses CABasicAnimation, CAKeyframeAnimation, CAAnimationGroup, or CATransition.

Animating Core Animation Layers

You can animate the contents of your iOS or macOS app’s user interface by attaching animations to CALayer objects. For more information, see Core Animation Programming Guide.

Animating Scene Kit Content

In Scene Kit, animation objects represent not only property-based animations, but also animations of geometry data created with external 3D authoring tools and loaded from a scene file. You use the properties of the CAAnimation object representing a geometry animation to control its timing, monitor its progress, and attach actions for Scene Kit to trigger during the animation. You can attach animations to Scene Kit objects that adopt the SCNAnimatable protocol, including nodes, geometries, and materials.

In a Scene Kit app, CAAnimation objects support additional methods and properties, listed under Controlling SceneKit Animation Timing, Fading between SceneKit Animations, and Attaching SceneKit Animation Events.


Creating an Animation

+ animation

Creates and returns a new CAAnimation instance.

+ animationWithSCNAnimation:

Creates an animation from a SceneKit animation.

Animation Attributes


Determines if the animation is removed from the target layer’s animations upon completion.


An optional timing function defining the pacing of the animation.

Providing Default Values

+ defaultValueForKey:

Specifies the default value of the property with the specified key.

Designating a Delegate


Specifies the receiver’s delegate object.

Archiving Properties

- shouldArchiveValueForKey:

Specifies whether the value of the property for a given key is archived.

Controlling SceneKit Animation Timing


For animations attached to SceneKit objects, a Boolean value that determines whether the animation is evaluated using the scene time or the system time.

Fading between SceneKit Animations


For animations attached to SceneKit objects, the duration for transitioning into the animation’s effect as it begins.


For animations attached to SceneKit objects, the duration for transitioning out of the animation’s effect as it ends.

Attaching SceneKit Animation Events


For animations attached to SceneKit objects, a list of events attached to an animation.


Inherits From

See Also



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


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


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


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


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


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


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