<!--
{
  "availability" : [
    "macOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "AppKit",
  "identifier" : "/documentation/AppKit/NSAnimation/animationCurve",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Property",
  "symbol" : {
    "kind" : "Instance Property",
    "modules" : [
      "AppKit"
    ],
    "preciseIdentifier" : "c:objc(cs)NSAnimation(py)animationCurve"
  },
  "title" : "animationCurve"
}
-->

# animationCurve

The timing curve for the animation.

```
var animationCurve: NSAnimation.Curve { get set }
```

## Discussion

The animation curve describes the relative frame rate over the course of the animation; predefined curves are linear, ease in (slow down near end), ease out (slowly speed up at start), and ease in-ease out (S-curve). Changing the value of this property changes the timing of an in-progress animation. The value of this property is ignored if the delegate implements the [`animation(_:valueForProgress:)`](/documentation/AppKit/NSAnimationDelegate/animation(_:valueForProgress:)) method.

Setting this property to an invalid value raises an exception. For a list of valid animation values, see [`NSAnimation.Curve`](/documentation/AppKit/NSAnimation/Curve).

---

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)