The abstract superclass for Core Animation animations.


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.


Archiving properties

func shouldArchiveValue(forKey: String)

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

Providing default values for properties

class func defaultValue(forKey: String)

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

Animation attributes

var isRemovedOnCompletion: Bool

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

var timingFunction: CAMediaTimingFunction?

An optional timing function defining the pacing of the animation.

Getting and setting the delegate

var delegate: CAAnimationDelegate?

Specifies the receiver’s delegate object.

Controlling SceneKit Animation Timing

var usesSceneTimeBase: Bool

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

var fadeInDuration: CGFloat

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

var fadeOutDuration: CGFloat

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

Attaching SceneKit Animation Events

var animationEvents: [SCNAnimationEvent]?

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

See Also


protocol CAAnimationDelegate

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

class CAPropertyAnimation

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

class CABasicAnimation

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

class CAKeyframeAnimation

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

class CASpringAnimation

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

class CATransition

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

class CAValueFunction

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

Beta Software

This documentation contains preliminary information about an API or technology in development. This information is subject to change, and software implemented according to this documentation should be tested with final operating system software.

Learn more about using Apple's beta software